Linux操作篇之配置SSH服务
一、什么是SSH。
SSH(Secure Shell)是我们在使用终端登录Linux时,所使用的传输协议。这个是一种加密的传输方式,可以将我们要发送给Linux端的信息进行加密传输,是一种安全且可靠传输方式。
二、工作模式。
先明白两个东西:公钥;私钥。
公钥:将数据信息进行加密的“工具”。可以理解为锁。
私钥:将加密的数据新建进行解密的“工具”。可以理解为钥匙。
公钥是公开的,私钥是不公开的。
1、用户名、密码登录方式。
2、密钥对登录方式。
相比起用户名与密码登录方式,这个方法更加安全。当配置完成后,不再需要用户/密码的方式进行验证。直接使用公钥与私钥进行验证。且连接是双向的(一端既可以是服务端也可以是客户端)。
三、配置过程。
1、配置虚拟机IP地址与主机名。
网络可以修改文件/etc/sysconfig/network-scripts/ifcfg-ens33。
主机名可以使用(hostnamectl set-hostname 主机名)命令修改。修改完成重启即可。
2、修改/etc/hosts配置文件。
node1与node2两台的这个配置文件都这样配置。这样可以将node1与node2作为域名使用。
3、创建公钥。
ssh-keygen -t rsa
-t 选择加密类型rsa\dsa,一般选择rsa
-b 指定加密长度(最少2048位,默认2048位)
输入执行命令后,一直回车,结束之后会自动生成一个.ssh目录,里面存放着本端的公钥(.pub)与私钥(.rsa)。
4、将公钥交于对端。
ssh-copy-id 用户名@IP地址 (用户名是用来登录服务端的用户名,默认root。)
输入执行命令后,会自动将node2的IP地址解析出(通过/etc/hosts文件),然后询问是否继续连接,输入yes。因为目前这个状态还未完成配置,所以连接node2需要node2的root密码进行验证。
5、双向验证。
完成后,在node2中的.ssh中会存在上图所示的文件。这样node1使用ssh登录node2时,不在需要密码。
三、ssh的一些配置(修改/etc/ssh/sshd_config,完成之后再重启服务)
1、默认端口
在ssh服务中,默认的端口是22。可以通过修改配置文件改变ssh的服务端口。
将注释去掉,修改22(范围1-65535),推荐修改8000+以上的端口。
ssh -p 端口号 IP地址
2、限制连接的网卡
在正常工作中,一个服务器会存在多个网卡。比如一个网卡连接互联网,一个网卡连接内网,而连接互联网网卡并不安全,所以可以限制只能从内网网卡进行ssh登录。
去掉注释。修改0.0.0.0,它默认是所以地址,修改为内网网卡的IP地址。这样就只能通过内网网卡进行ssh登录。
3、禁用密码登录。
上面记录了使用密钥对进行ssh登录。这样配置完成后,存在两种登录方式(密码登录与密钥对登录)。可以将密码登录禁止,只使用密钥对登录,保证服务器密码安全。
将“yes”修改为“no”。
4、禁用root远程登录
root用户权限比较大,远程登录不安全。
去掉注释,将“yes”修改为“no”。
四、ssh的扩展
1、scp(secure copy)
scp 用户名@IP地址:绝对路径/文件 目录路径 (将服务端的文件拷贝到本地)
scp 目录路径/文件 用户名@IP地址:绝对路径 (将本地的文件拷贝到服务端)
scp -P 端口号 (指定ssh的端口号)
2、SFTP
sftp 用户名@IP地址 (登录服务端)
sftp -oPort=端口号 用户名@IP地址 (指定端口号登录服务端)
操作方法与ftp服务基本一样。几处不同:
a、SFTP传输过程会建立安全通道,传输过程更稳定。
b、SFTP使用的是加密传输协议,传输过程更加安全。
c、FTP使用TCP / IP协议。而SFTP是SSH协议的一部分,它是一种远程登录信息。
d、FTP使用21端口建立连接,20端口传输数据。SFTP通过22端口建立连接传输数据。