SSH
SSH简介
Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
SSH主要用来代替Telnet和非安全shell的替代品。
SSH安装
openssh是SSH协议的实现。centos是默认安装
[root@localhost ~]# rpm -q openssh-server
openssh-server-7.4p1-21.el7.x86_64 # 是SSH的服务端sshd
一般都默认安装了客户端openssh-client 如果没有安装可以使用yum安装
SSH客户端
配置文件:/etc/ssh/ssh_config
。一般不会做啥修改。
ssh语法格式:ssh [user@]host [COMMAND]
常用选项:
-p port:远程服务器监听的端口、
-b:指定连接的源ip
-v:调式模式
-C:压缩模式
-X:支持x11转发
-Y:支持信任X11转发
-t:强制伪tty分配
示例:
[root@livedvd ~]# ssh root@192.168.199.123
The authenticity of host '192.168.199.123 (192.168.199.123)' can't be established.
RSA key fingerprint is b9:60:f8:df:bb:34:42:1a:f5:f1:e0:98:47:d7:f1:68.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.199.123' (RSA) to the list of known hosts.
root@192.168.199.123's password:
Last login: Sat Jan 4 20:21:41 2020 from p7o91w0o03xbo0d.lan
#第一次连接时需要输入yes
当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host_rsa_key.pub
文件中的公钥到客户机中的.ssh/known_hosts
中。下次连接时将自动匹配相应私钥,不能匹配,将拒绝连接,如果换台机器和之前的地址一样。需要将.ssh下的known_hosts文件中的公钥删掉即可。
示例:
[root@localhost ~]# cat .ssh/known_hosts
192.168.199.179 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAu5Zt0sXAgc6Y3o8DkHZnLHCI32D9YK2ih4/2u9atkuzKOZnGaV9Zjf5Q8+6gw+LK1m21ih9XQGl+LWQfHZGR0X5jdSR4Z9ehR1QsNHDphuVn1x1Rkk0lDSJx3jSRB64NQ/tQM/CgVTDXFwnShWWJEXsHJgphS61en/V3mP5G9NDJKlb+NnB0AbL4YIDnZXHjLWaFyWfo8ZFV4vN1+q5zIlFeHektglSmoMAEhylD9d2MuyPdFFbnOTDmhpa1hAwZgq9TC1XkIyPYAiDQ0CaFgVTnJ7B7rV1VdnCSDOftpJseFbVkYopjiyZ9B5mHdQVUXwLchzPuIIr6VeMWnfExXQ==
#这就是对方的公钥
#测试将一台新机器设置成179来让上边示例的机器连接
[root@localhost ~]# ssh 192.168.199.179
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:/7hPwkUvWML2wxewbU9/RXicm9DiCd/615H0tyxwWMc.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:3
RSA host key for 192.168.199.179 has changed and you have requested strict checking.
Host key verification failed.
# 如果ip地址一样,机器变了,就会出现这种错误。可以直接将known_hosts文件中对应的地址公钥删除即可
SSH登录方式
密码登录
登录过程
- 客户端向服务器发起ssh申请
- 服务器向客户端发送一个公钥。
- 客户端用公钥将口令进行加密。发送给服务器端。
- 服务器用私钥解密之后,核对口令。一致。即可登录
密钥登录
密钥登录过程
- 客户端首先生成一对密钥
- 并将客户端的公钥拷贝到服务器端
- 当客户端再次发送一个连接请求,包括ip、用户名。
- 服务端得到客户端的请求后,会到authorized_keys中查找,如果有响应的ip和用户,就会随机生成一个字符串,例如:acdf
- 服务器端将使用客户端拷贝过来的公钥对字符串进行加密,然后发送给客户端
- 得到服务器发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务器
- 服务器端接收到客户端发送的字符串后,跟之前的字符串进行对比,如果一致,就允许免密登录。
示例:
1)在客户端生成密钥对,ssh-keygen命令生成。 -t指明算法,-f指定文件的文件名
[root@ssh-client ~