zl程序教程

您现在的位置是:首页 >  后端

当前栏目

ssh服务

2023-09-14 09:15:53 时间

ssh服务

该文档适用于RHEL7RHEL8系列Linux

参考: https://segmentfault.com/a/1190000021888536

在这里插入图片描述


ssh客户端~/.ssh目录及相关权限

~/.ssh 目录权限700

# 查看~/.ssh目录的权限
stat -c%a .ssh

# 设置~/.ssh目录权限
chmod 700 ~/.ssh

在这里插入图片描述


生成ssh密钥对

https://blog.csdn.net/omaidb/article/details/120028143


公钥和私钥的权限

~/.ssh 目录下的密钥文件权限是600
id_rsa(私钥)
id_rsa.pub(公钥)

# 查看私钥和公钥文件权限
stat -c%a id_rsa id_rsa.pub

# 设置私钥和公钥文件权限
chmod 600 id_rsa id_rsa.pub

在这里插入图片描述


authorized_keys(授权文件)

ssh-client公钥内容保存到服务器上的authorized_keys(授权文件)中,客户端可实现免密登录.
服务器上的authorized_keys(授权文件)权限必须是600或者400

# 将指定的客户端添加为免密登陆
echo "ssh-client的公钥信息" >> /root/.ssh/authorized_keys

将客户端的id_rsa密钥文件,拷贝到另一台机器~/.ssh/目录下,另一台机器即可免密登录该服务器.


known_hosts(指纹记录核对文件)

known_hosts(StrictHostKey记录核对文件) —会将访问过的计算机的公钥的StrictHostKey保存在该文件中,当下次访问相同计算机时,OpenSSH会核对对应机器的StrictHostKey。如果StrictHostKey不同,OpenSSH会发出警告.


ssh配置文件(~/.ssh/config)

选项参考: https://deepzz.com/post/how-to-setup-ssh-config.html
https://mengxiaoxing.top/2021/10/04/ssh配置文件详解/
ssh config 配置参数freebsd官方文档
ssh config 配置 常用参数-中文doc
ssh config 常用配置参数
ssh配置文件详解

https://plantegg.github.io/2019/06/02/史上最全_SSH_暗黑技巧详解–收藏保平安/

~/.ssh/config是ssh客户端的用户级配置文件,优先级最高

# 顶格居左写,表示全局ssh客户端全局配置
# 写在Host配置下,与Host参数对齐表示只对该host生效

# 常用的参数
## 忽略第一次密钥检查
StrictHostKeyChecking no
# 定义known_hosts文件为空--不检查指纹
UserKnownHostsFile /dev/null

## GSSAPI认证能优化ssh连接速度
GSSAPIAuthentication no
## 不检查IP
CheckHostIP no
## 启用压缩
Compression yes
## 指定变量
### 解决locale报错问题
SendEnv LC_ALL zh_CN.UTF-8
SendEnv LANG zh_CN.UTF8

# 配置1天(60秒*1440次)内ssh客户端不超时
## 服务器存活最大数值超过次1440次服务器无响应客户端会断掉
ServerAliveCountMax 1440
## 服务器存活时间间隔,60秒发送一次KeepAlive
ServerAliveInterval 60
## 发送TCP保活报文
TCPKeepAlive yes

# 重用相同的连接
ControlMaster auto
## 连接状态文件
ControlPath ~/.ssh/ssh_mux_%h_%p_%r
## 72小时内保持连接(只需要第一次输入密码)
ControlPersist 72h

ssh客户机配置示例

Host node1
	user dns
	Hostname 114.114.114.114
	Port 2222
	# 指定私钥
	identityfile ~/.ssh/id_rsa_dns
	# 指定公钥
	CertificateFile ~/.ssh/user-cert.pub
	# 配置1天(60秒*1440次)内ssh客户端不超时
	## 服务器存活最大数值超过次1440次服务器无响应客户端会断掉
	ServerAliveCountMax 1440
	## 服务器存活时间间隔,60秒发送一次KeepAlive
	ServerAliveInterval 60
	## 发送TCP保活报文
	TCPKeepAlive yes

ssh客户端主配置文件/etc/ssh/ssh.conf(默认ssh配置文件):

一般不直接配置这个文件, 更多用来参考文件中的配置参数

/etc/ssh/ssh.conf文件配置方法与~/.ssh/config配置方法完全一致,一般只会配置~/.ssh/config文件


服务端/etc/ssh目录及相关文件


服务端/etc/ssh目录下默认的3对(或4对)非对称加密密钥

在这里插入图片描述
在这里插入图片描述


查看服务器的指纹

# 从dsa私钥查看指纹
## 也可以查看其他算法的私钥指纹,根据实际情况而定
## 第一次登陆时会提示指纹,这个指纹跟服务器上查看到的指纹必须一致,如果不一致,那就是ssh被劫持了
[rhel8 root /etc/ssh]# ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key
256 SHA256:EOwjru1RODrMEAUOcIPi0SdkZ85I8Un+Q35Hp+Rz+X8 ssh_host_ecdsa_key.pub (ECDSA)

# 查看dsa私钥md5格式指纹
[rhel8 root /etc/ssh]# ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key -E md5
256 MD5:ad:10:0e:6f:98:96:55:87:cf:f2:bf:13:46:e7:2d:a7 ssh_host_ecdsa_key.pub (ECDSA)

# 查看dsa私钥sha1格式指纹
[rhel8 root /etc/ssh]# ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key -E sha1
256 SHA1:lQFmokJbzQziD9NngktJWpzz2Fk ssh_host_ecdsa_key.pub (ECDSA)

# 查看dsa私钥sha256格式指纹
[rhel8 root /etc/ssh]# ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key -E sha256
256 SHA256:EOwjru1RODrMEAUOcIPi0SdkZ85I8Un+Q35Hp+Rz+X8 ssh_host_ecdsa_key.pub (ECDSA)

# 查看dsa私钥sha512格式指纹
[rhel8 root /etc/ssh]# ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key -E sha512
256 SHA512:ingRxCRQqQNYEODpBvqhJ/UhFxbPmRR8uCLjwbYWx1a9CLLr1ddVcmsC+UfrzOT//UpxDEY2Bagq6ZZB949Rcg ssh_host_ecdsa_key.pub (ECDSA)

使用ssh-keyscan查看服务器指纹

https://www.linuxcool.com/ssh-keyscan


ssh秘钥登录失败:invalid format

参考: https://blog.csdn.net/qq_27727147/article/details/120304936

原因分析: 一般是公钥末尾缺少一个换行符


解决办法:

用记事本打开公钥,最后一行敲个回车即可!
如果提示的是私钥格式错误,同样最后一行加回车,如果是跨平台复制的密钥对,还要注意LFCRLF


服务器密钥变更(Host key verification failed.)

参考: https://blog.csdn.net/wd2014610/article/details/85639741

# 注意,必须是IP地址
ssh-keygen -R ${必须是ip地址}
# 除了使用上面的命令,你也可以手工修改`known_hosts`文件,将公钥指纹删除。

在这里插入图片描述