【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)

一、SSH远程终端连接工具

1、SSH简介

SSH是一种网络协议,用于计算机之间的加密登录。最早的时候,互联网通信都是明 文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH 协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获 得推广,目前已经成为Linux系统的标准配置。

2、SSH登录原理

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第1张图片

也就是客户端先向服务端发送登录请求;客户端收到请求后发送自己的公钥;客户端收到公钥后将所有登录信息加密后传送到服务端进行登录;服务端此时已经收到请求了,它需要客户端使用私钥解密登录信息,确定是用户本人,验证成功后才允许登录成功。

3、SSH结构

SSH服务由服务端软件OpenSSH(openssl)和客户端(常见的有SSH)

SecureCRT,Putty,xshell组成,SSH服务默认使用22端口提供服务,它有两个不兼容的SSH协议版本,分别是1.x和2.x

下面我们看下服务端上的ssh相关软件。

[root@keepalived-master ~]# rpm -qa | egrep "openss*"
openssl-libs-1.0.2k-21.el7_9.x86_64
openssl-1.0.2k-21.el7_9.x86_64
openssh-server-7.4p1-16.el7.x86_64
openssh-7.4p1-16.el7.x86_64
openssh-clients-7.4p1-16.el7.x86_64
openssl-devel-1.0.2k-21.el7_9.x86_64
  • OpenSSH同时支持SSH1.x和2.x。用SSH 2.x的客户端程序不能连接到SSH 1.x的 服务程序上。

  • SSH服务端是一个守护进程(daemon),它在后台运行并响应来自客户端的连 接请求。SSH服务端的进程名为sshd,负责实时监听远程SSH客户端的连接请 求,并进行处理,一般包括公共密钥认证,密钥交换,对称密钥加密和非安全连 接等。这个SSH服务就是我们前面基础系统优化中保留开机自启动的服务之一。

  • ssh客户端包含ssh以及像scp(远程拷贝),slogin(远程登录),sftp(安全 FTP文件传输)等应用程序。

  • ssh的工作机制大致是本地的ssh客户端先发送一个连接请求到远程的ssh服务 端,服务端检查连接的客户端发送的数据包和IP地址,如果确认合法,就会发送 密钥发回给客户端,自此连接建立。


一般来说,每个用户都会在对应的家目录下生成一个 .ssh 文件夹,如 tinychen 用 户则为/home/tinychen/.ssh ,而 root 用户则为 /root/.ssh 。如果是手动创建 的 .ssh 文件夹,还需要注意权限问题。一般来说 .ssh 文件夹的权限为700,私钥为 600,公钥为644。

[root@NAT1 ~]# ls -lA | grep ssh
-rw-------. 1 root root       35 Dec 16 17:38 .lesshst
drwx------. 2 root root       25 Dec  2 09:35 .ssh
[root@NAT1 ~]# cd .ssh
[root@NAT1 .ssh]# ls -l
total 4
-rw-r--r--. 1 root root 354 Dec 14 21:33 known_hosts

二、SSH基本用法

1、语法 :

ssh -p 22 user@host

2、参数:

-p:指定端口号。

user:登录的用户名。

host:登录的主机。

默认的端口号为22,当端口号为22的时候,可以省略-p 22,直接使用如下方式:

ssh user@host
# “@”:前边为用户名,如果用当前用户连接,可以不指定用户名
# “@”:后面为要连接的服务器的IP

此外,如果本地正在使用的用户名与远程登录的用户名一致,登录用户名也是可以省略的,即如下:

ssh host

3、举例:

我们登录一个普通用户tom:

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第2张图片

也就是我在A上使用普通用户tom登录了,如果我要在A上登录B上的普通用户tom,则可以直接输入IP号;但我要是在A上使用普通用户tom登录了,我要在A上登录B上的超级用户root,则要输入用户名@IP号。


当第一次SSH连接的时候,本地会产生一个密钥文件~/.ssh/known_hosts(多个密 钥)


第一次远程登录,会出现高亮显示部分,因为要将密钥添加到本地的密钥文件中;

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第3张图片

第二次远程登录,就不会出现高亮显示部分,因为密钥已经存在中;


如果连接不上,报错字符串对应的可能问题:

1,no route to host 可能为防火墙影响

2,Connection refused可能为防火墙,Connection refused 还可能是连接的对端 服务没开或者端口改变了。

三、ssh服务认证类型

1、基于口令认证

基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务器的SSH连接帐 号和口令(当然也要知道对应服务器的 IP及开放的 SSH端口,默认为22 ),就可以通过 ssh客户端登录到这台远程主机。此时,联机过程中所有传输的数据都是加密的。

2、基于密钥认证

优点:不用输入密码,也就是免密登录

首先在客户端生成一对密钥 ;使用默认算法则不需要加-t

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第4张图片

将客户端的公钥传到服务器端

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第5张图片

测试

四、ssh服务常见配置

SSH服务的配置文件为/etc/ssh/sshd_config

1、修改默认端口

通过看配置文件发现ssh服务的默认端口是22,很多时候我们的服务器被不是被人针 对了,而是对方在扫一个网段中开启22端口的机器,你的机器密码又是很简单的 111111之类的,你不被黑谁被黑,所以我们要把默认端口改了,这样就不容易被人 扫出来恶意了。

步骤:

①修改配置并重启服务

将端口改为2201

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第6张图片

②使用22端口连接

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第7张图片

显示连接拒绝

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第8张图片

③使用2201端口进行连接

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第9张图片

显示可以连接

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第10张图片

我们把默认端口改为2201,修改端口后要记得重启服务systemctl restart sshd;

(注意改的这个端口一定不能占用别的服务的默认端口,以免别的服务启动不起来)

注意:

如果按以上步骤不能使用新端口进行连接,可能是没有关防火墙和selinux服务;


2、禁止root登录

root在我们系统中是一个特殊的存在,他是系统管理员,也就意味着他在系统中可以 为所欲为,所以它也是我们要特别关注的对象,我们可以在一般操作中用普通用户操 作,在有需要修改一些系统设置的时候再从普通用户切换到root用户,这样可以最大 限度的避免因为误操作而对系统造成破坏,同时也可以避免黑客使用root用户名来暴 力破解密码登录系统。

步骤:

①进入文件改配

将yes改为no

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第11张图片
【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第12张图片

②改完重启服务

③查看效果

root用户权限被拒绝

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第13张图片

登录普通用户:

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第14张图片

登录成功;

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第15张图片

3、限制ssh监听的IP

这个适用于服务器有多个IP,这样我们就可以只监听内网IP,这样就只能用在同一个 局域网的机器去连接,而我们只需要让在同一个服务器的另一台机器监听在外网,这 样就可以实现在外网也访问服务器了,方法如下:

步骤:

①添加一个内网网卡,并重启虚拟机;

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第16张图片

ip a查看,多了一个内外网卡:

①修改配置并重启服务

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第17张图片

仅限192.168.91.140去连接ssh

③退出外网ip

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第18张图片

退出外网ip重新用外网ip连,发现连接不上;

因为之前是通过外网ip192.168.42.28连的,现在将监听ip改成了内外192.168.91.140,所以外网ip已经连不上了;

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第19张图片

使用内网ip连接:

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第20张图片
【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第21张图片

4、禁止使用密码登录

在前面我们说过使用key认证登录的,这是一种比较安全的登录方式,所以为了提高 安全性我们可以通过这种方式来登录服务器,再禁止使用密码登录使用key认证登录 我已经说过了,在这里就说下如何禁止使用密码登录,也只需要修改一下配置文件就 可以了,如下:

步骤 :

①修改配置并重启服务

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第22张图片

这个时候我们是无法用密码登录系统的

而我们需要传公钥就得要密码这是很矛盾的,所以需要我们提前把公钥传给服务器, 或者临时开启密码登录,然后就能实现登录了

五、常见配置总结

1、常见的SSH服务器监听的选项如下:

1 Port 22 //监听的端口号为22
2 Protocol 2 //使用SSH V2协议
3 ListenAdderss 0.0.0.0 //监听的地址为所有的地址
4 UserDNS no //禁止DNS反向解析 建议用no,不需要对DNS进行反向解
析,可以加快ssh连接速度。

2、常见用户登录控制选项如下 :

PermitRootLogin no // 禁止root用户登录
PermitEmptyPasswords no // 禁止空密码用户登录 一旦启用了
PermitEmptyPasswords yes,那么所有无密码的用户也就可以远程登录了,并且还是
免密码的方式。
LoginGraceTime 2m // 登录验证时间为2分钟
MaxAuthTries 6 // 最大重试次数6次
AllowUsers steven // 只允许steven用户登录
DenyUsers steven // 不允许登录用户 steven
MaxSessions // 最大终端会话个数

3、常见登录验证方式如下:

1 PasswordAuthentication yes //启用密码验证
2 PubkeyAuthentication yes //启用密匙验证
3 AuthorsizedKeysFile .ssh/authorized_keys //指定公钥数据库文件

六、ssh客户端附带的远程拷贝scp命令

scp基本语法:scp -secure copy

每次都是全量拷贝,增量拷贝用rsync

#推:PUSH
scp -P22 -r -p /tmp/chensiqi [email protected]:/tmp
#拉:PULL
scp -P22 -rp [email protected]:/tmp/chensiqi /opt/

scp为远程拷贝文件或目录的命令

-P(大写):接端口,默认22
-r:递归,表示拷贝目录
-p:表示在拷贝前后保持文件或目录属性
-l limit:限制速度

举例:

PUSH将文件拷给别人

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第23张图片

PULL从别人那拷走文件

【Linux】SSH远程终端连接工具(SSH基本用法、ssh服务认证类型、ssh服务常见配置、常见配置总结、远程拷贝scp命令)_第24张图片

scp知识小结

1,scp是加密的远程拷贝,而cp仅为本地拷贝

2,可以把数据从一台机器推送到另一台机器,也可以从其他服务器把数据拉回到本 地执行命令的服务器

3,每次都是全量完整拷贝,因此,效率不高,适合第一次拷贝用,如果需要增量拷 贝,用rsync

4、一定要加文件存放路径


七、知识小结

1)SSH是安全的加密协议,用于远程连接Linux服务器。

2)SSH默认端口是22,安全协议版本SSH2,除了2之外还有SSH1(有漏洞).

3)SSH服务端主要包含两个服务功能SSH远程连接和SFTP服务。

4)Linux SSH 客户端包含ssh远程连接命令,以及远程拷贝scp命令等。

你可能感兴趣的:(Linux常用工具及服务,linux,ssh,运维)