密钥对默认RSA2048位加密。
服务端保存公钥,客户端私钥登录。
vim /etc/ssh/sshd_config
...
#PubkeyAuthentication yes #default
#AuthorizedKeysFile .ssh/authorized_keys #default
PasswordAuthentication no #warning 禁用密码登录,慎重!最后一步。
...
1.制作密钥对
ssh-keygen -C forLiLei
2.安装公钥
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
3.修改公钥权限400 or 600
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
4.修改配置文件(不一定需要):
vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes #default
PermitRootLogin yes
ChallengeResponseAuthentication no
5.重启ssh服务
service sshd restart
or
service sshd reload
客户端:
windows下使用Putty密钥登录:
1.转化私钥格式
PuttyGen---Actions---Load---save private key
2.导入私钥,登录.
Puttty---Connection---SSH---Auth---PrivatekeyFile
Linux私钥登录:
1.添加登录用到RSA私钥
vim ~/.ssh/priFileName
vim ~/.ssh/priFileNameA
2.编辑ssh私钥登录配置文件
vim ~/.ssh/config
Host aliasName
HostName 121.33.56.99
Port 22
User root
IdentityFile ~/.ssh/priFileName
ServerAliveInterval 60
Host aliasNameA
HostName 121.33.56.88
Port 22
User root
IdentityFile ~/.ssh/priFileNameA
ServerAliveInterval 60
chmod 400 ~/.ssh/config
- HostName: 主机名. 可填IP或域名
- Port: SSH服务端口
- User: SSH用户名
- IdentityFile: 客户端用户免密登录的证书私钥
- ServerAliveInterval: 单位时间内(秒)不断发送脉冲信号,维持客户端登录状态。
- ForwardAgent: 支持免密码连接三方服务器.(例: vscode ssh-remote 支持打开远程服务器的文件项目)
3.更改RSA私钥权限(400 or 600)
chmod 400 ~/.ssh/priFileName
chmod 400 ~/.ssh/priFileNameA
使用:
ssh aliasName
scp /home/fileName aliasName:/home/
SSH连接超时问题:
- 服务器存在防火墙,会关闭超时空闲连接,或设置了关闭超时空闲连接。
- 客服端和服务器之间存在路由器,路由器也可能带有防火墙,会关闭超时空闲连接。
- 客服端存在防火墙,会关闭超时空闲连接
一. 服务器端配置
sudo vi /etc/ssh/sshd_config
# Server 每隔 60 秒发送一次请求给 Client,然后 Client响应,从而保持连接
ClientAliveInterval 60
# Server发出请求后,客户端没有响应得次数达到 10,就自动断开连接,正常情况下,Client不会不响应
ClientAliveCountMax 10
sudo restart ssh
二.修改客户端配置
sudo vi /etc/ssh/ssh_config # 或 ~/.ssh/config
TCPKeepAlive=yes
# Client每隔 60 秒发送一次请求给 Server,然后 Server响应,从而保持连接
ServerAliveInterval 60
# Client发出请求后,服务器端没有响应得次数达到3,就自动断开连接,正常情况下,Server 不会不响应
ServerAliveCountMax 3
三.修改连接工具配置
secureCRT:会话选项 - 终端 - 反空闲 - 发送NO-OP每xxx秒,设置一个非0值。
putty:Connection - Seconds between keepalive(0 to turn off),设置一个非0值。
iTerm2:profiles - sessions - When idle - send ASCII code.
XShell:session properties - connection - Keep Alive - Send keep alive message while this session connected. Interval [xxx] sec.
SSH 保持连接 https://blog.csdn.net/YuZhuQue/article/details/86607832