OpenSSH
1. 概述
在Linux系统中,OpenSSH是目前最流行的远程系统登录与文件传输应用。
OpenSSH采用密钥的方式对数据进行加密,确保数据传输的安全。在正式开始传输数据之前,双方首先要交换密钥,当收到对方的数据时,再利用密钥和相应的程序对数据进行解密。这种加密的数据传输有助于防止非法用户获取数据信息。
当使用ssh命令登录到远程系统时,OpenSSH服务器的sshd守护进程将会发送一个公钥,OpenSSH客户端软件ssh将会提示用户确认是否接收发送钥。同时,OpenSSH客户端也会向服务器回传一个密钥,使OpenSSH连接双方的每个系统都拥有对方的密钥,因而能够解密对方经由加密链路发送的加密数据。
OpenSSH服务器的公钥与私玥均存储在/etc/ssh目录中。在OpenSSH客户端,用户收到的所有公钥,以及提供密钥的OpenSSH服务器的IP地址均存储在用户主目录下的~/.ssh/known_hosts文件中(.ssh是一个隐藏目录)。
如果密钥与IP地址不再匹配,OpenSSH将会认为某个环节出了问题。例如,重新安装操作系统或者升级OpenSSH都会导致系统再次生成新的密钥,恶意的网络攻击也会造成密钥的变动。因此,当密钥发生变化时,总是应当先了解密钥发生变化的原因,以确保网络访问期间的数据安全。
2. 工作模式
openssh服务端 //sshd,配置文件在/etc/ssh/sshd_config
openssh客户端 //ssh,配置文件在/etc/ssh/ssh_config
ssh-keygen //密钥生成器
ssh-copy-id //将公钥传输至远程服务器
scp //跨主机安全复制工具
3. 客户端连接服务端的方式
//以当前用户身份在客户端连接服务端,结束使用exit命令
[root@pengzh ~]# ssh 192.168.207.130
The authenticity of host '192.168.207.130 (192.168.207.130)' can't be established.
ECDSA key fingerprint is SHA256:DrUgtAO+SHkDgUIhFoAY0YR1QStcN8of1lQPIi+njZA.
ECDSA key fingerprint is MD5:4d:80:5c:ee:81:58:36:2a:79:93:d8:58:20:ca:ef:7a.
Are you sure you want to continue connecting (yes/no)? yes
//当前主机第一次连接陌生主机时,会自动建立.ssh/know_hosts
Warning: Permanently added '192.168.207.130' (ECDSA) to the list of known hosts.
root@192.168.207.130's password:
Last login: Sun Apr 26 10:01:50 2020 from 192.168.207.1
[root@localhost ~]# exit
logout
Connection to 192.168.207.130 closed.
[root@pengzh ~]#
//以其他用户身份在客户端连接服务端
[root@pengzh ~]# ssh tom@192.168.207.130
tom@192.168.207.130's password:
Last login: Sun Apr 26 10:17:28 2020 from 192.168.207.129
[tom@localhost ~]$
//在客户端连接服务端,并执行一条命令
客户端:
[root@pengzh ~]# ssh tom@192.168.207.130 'touch abc'
tom@192.168.207.130's passw