ssh入门
SSH简介
SSH加密连接双方会话的方式来保证连接的安全性,守护进程为sshd,默认监听端口为22.
SSH的配置文件
-
客户端配置文件:全局配置文件/etc/ssh/ssh_config和用户配置文件~/.ssh/config
-
服务端配置文件:/etc/ssh/sshd_config
实际上命令行上也可以传递配置选项。它们生效的优先级是:命令行配置选项 > ~/.ssh/config > /etc/ssh/ssh_config。
SSH的验证
- 主机验证:每台主机验证一次
- 用户验证:因为一个主机有多个用户,每台主机的每个用户都需要单独进行验证
SSH的验证机制(常见)
- 密码验证机制
- 公钥验证机制
SSH的功能
端口转发(隧道模式),代理认证,连接共享(连接复用 )
连接的过程
- 主机认证。客户端比对和更新服务端的发送过来的host key
-
客户端在~/.ssh/known_hosts和**/etc/ssh/known_hosts**存储host key用来标识连接过某个主机
-
服务端在
/etc/ssh/ssh_host*
中,sshd服务程序启动时重建
RSA算法保存在/etc/ssh/ssh_host_rsa_key和/etc/ssh/ssh_host_rsa_key.pub(保存了host key)中
格式如下
172.16.10.6 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC675dv1w+GDYViXxqlTspUHsQjargFPSnR9nEqCyUgm5/32jXAA3XTJ4LUGcDHBuQ3p3spW/eO5hAP9eeTv5HQzTSlykwsu9He9w3ee+TV0JjBFulfBR0weLE4ut0PurPMbthE7jIn7FVDoLqc6o64WvN8LXssPDr8WcwvARmwE7pYudmhnBIMPV/q8iLMKfquREbhdtGLzJRL9DrnO9NNKB/EeEC56GY2t76p9ThOB6ES6e/87co2HjswLGTWmPpiqY8K/LA0LbVvqRrQ05+vNoNIdEfk4MXRn/IhwAh6j46oGelMxeTaXYC+r2kVELV0EvYV/wMa8QHbFPSM6nLz
更详细的主机认证过程是:先进行密钥交换(DH算法)生成session key(rfc文档中称之为shared secret),然后从文件中读取host key,并用host key对session key进行签名,然后对签名后的指纹进行判断。
- 身份验证。SSH支持多种身份验证机制,它们的验证顺序如下:gssapi-with-mic, hostbased, publickey, keyboard-interactive, password
-
公钥认证机制(public key):客户端A需要将自己生成的公钥(~/.ssh/id_rsa.pub)发送到服务端B的/.ssh/authorized_keys文件中。
-
密码认证机制(password):输入密码
-
命令执行。ssh的命令执行有两种方式:
-
ssh命令行不带任何命令参数,服务器会为ssh分配一个伪终端,并进入bash环境。
ssh 172.16.10.6
-
ssh命令行带有命令参数,表示在远程主机上执行给定的命令【echo "haha"】。
ssh 172.16.10.6 'echo "haha"'
-
ubuntu22.04上的ssh远程连接
环境配置
- 客户端需要安装openssh-client
apt update
apt install openssh-client
- 服务端需要安装openssh-server
apt update
apt install openssh-server
(可选)服务端创建一个用户用于远程连接
sudo adduser 用户名
#接下来让你输入的密码可以用于ssh连接时候直接输入密码
ssh连接服务器
ssh 用户名@服务器ip
允许ssh远程连接root用户
sudo vim /etc/ssh/sshd_config
#在末尾添加或者修改注释
PermitRootLogin yes
PasswordAuthentication yes
# 重新启动ssh服务
systemctl restart sshd
其他主机尝试ssh连接本机的记录
存储在/var/log/auth.log
可以使用cat /var/log/auth.log
来查看