SSH
常用命令
SSH登录时指定私钥
1
ssh username@ip -i ./xxx/privateKey -p prot
SSH代理
1 | ssh -N -L -f 0.0.0.0:3306:127.0.0.1:3306 user@host |
- -N 只发送数据不连接
- -L 映射 localhost:localport:remotehost:remoteport 代理主机
- -f 后台运行
经过本机3306
端口的流量都经user@host
机器转发到127.0.0.1:3306
上去
配置
在.ssh文件夹下新建config
文件,示例:1
2
3
4
5
6
7
8
9
10
11
12Host www
HostName 192.168.1.111
Port 50
User root
IdentityFile ~/.ssh/id_rsa_2048
# git指定私钥
Host api
HostName api.domain.com
User git
Port 22
IdentityFile ~/.ssh/git_id_rsa
访问的时候只需运行ssh www
就能访问192.168.1.111
服务器了
SSH配置
/etc/ssh/sshd_config
禁止密码登录
vim /etc/ssh/sshd_config
1
PasswordAuthentication no
修改后重新加载配置
避免自动断开
vim /etc/ssh/sshd_config
1
2
3
4# 60s 一次心跳
ClientAliveInterval 60
# 5 次失败后自动段考
ClientAliveCountMax 5修改后重新加载配置
常见问题
已经在
authorized_keys
加入过publicKey,但是还是要求输入密码。权限问题,一般.ssh目录的文件权限为
600
。1
2chmod 600 authorized_keys
restorecon -r -vv /root/.sshssh-copy-id
命令
ssh-copy-id
命令可以把本地主机的公钥复制到远程主机的 authorized_keys 文件上,ssh-copy-id 命令也会给远程主机的用户主目录(home)和 ~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。1
2ssh-copy-id user@server
ssh-copy-id -i ~/.ssh/id_rsa.pub user@serversshpass
输入密码
ssh 登录时不能指定密码,有时间很不方便。使用 sshpass 可以来处理这个问题。1
sshpass -p 'passwd' ssh user@domain
连接自动断开
修改/etc/ssh/sshd_config
ClientAliveInterval
和ClientAliveInterval
参数1
2
3
4# 指定了服务器端向客户端请求消息的时间间隔。默认是0,不发送,而ClientAliveInterval 60表示每分钟发送一次。
ClientAliveInterval 60
# ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值, 就自动断开。
ClientAliveCountMax 3