ssh配置

本文用于记录一些常用的ssh配置

免密码登陆 vps

对于经常连接vps的人,每次都需要输入密码是非常无趣的事,可以通过生成生成公钥私钥,免密码使用ssh连接vps

假设A为本地主机,B为被控机器,欲连接的用户为user ip:1.1.1.1

A的命令

1
2
3
4
5
6
7
# 生成公钥私钥 可以指定私钥的密码以及生成位置
# 默认生成到 ~/.ssh/id_rsa.pub ~/.ssh/id_rsa
ssh-keygen -t rsa
# 在B创建.ssh文件夹并设置权限为700(本用户可读可写可执行,需要输入B机器密码)
ssh [email protected] "mkdir .ssh; chmod 0700 .ssh"
#考虑到B机器可能已经存在了公钥,仅复制公钥到被控机器(需要输入B机器密码)
scp ~/.ssh/id_rsa.pub [email protected]:~/.ssh/id_rsa.pub

B的命令

1
2
3
4
# 设置authorized_keys权限为600(本用户可读可写)
chmod 600 ~/.ssh/authorized_keys
# 避免覆盖原有公钥,将公钥追加在authorized_keys尾部
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

效果

A机器可直接用ssh连接B机器不用输入密码,若是需要制定别的私钥文件,用参数**-i**即可

避免ssh连接因超时闲置断开

在使用ssh时,常常因为长时间不操作而被服务器踢出,解决这种问题一般有两种方法

方法1

只需在客户端电脑上编辑/etc/ssh/ssh_config,修改ServerAliveInterval的值为60

ServerAliveInterval不存在,只需执行

1
echo "ServerAliveInterval 60" >> /etc/ssh/ssh_config

之后本机连接任何服务器都会保持连接

(需要root权限)

方法2

只需在服务器上编辑/etc/ssh/ssh_config,修改ClientAliveInterval的值为60

ClientAliveInterval不存在,只需执行

1
echo "ClientAliveInterval 60" >> /etc/ssh/ssh_config

(需要root权限)

重启ssh server后该设置会生效

但是每个连接到此服务器的客户端都会受影响,启用后服务器安全性可能会下降(比如忘记登出)