实现 SSH 免 IP 免密登录
基本配置
编辑 ~/.ssh/config
1Host 输入代替名
2 HostName 输入IP
3 Port 输入端口号
4 User 输入用户名
5 # ProxyCommand "C:\Program Files\Git\mingw64\bin\connect.exe" -S 127.0.0.1:7890 -a none %h %p
6
7# 定时发送心跳确保不断开连接
8ServerAliveInterval 30 # 每隔30秒发送一次
9ServerAliveCountMax 60 # 连续60次服务端无响应断开连接
注意代理命令 ProxyCommand 在其他机器上的不同用法:
在 unix 下为:
1ProxyCommand nc -X 5 -x 127.0.0.1:7890 %h %p
其中 %h 代表目标主机 ip,%p 代表目标主机端口号,其他参数用法解释如下:
1-X proxy_version
2 Requests that nc should use the specified protocol when talking to the proxy server.
3 Supported protocols are “4” (SOCKS v.4), “5” (SOCKS v.5) and “connect” (HTTPS proxy).
4 If the protocol is not specified, SOCKS version 5 is used.
5
6-x proxy_address[:port]
7 Requests that nc should connect to hostname using a proxy at proxy_address and port.
8 If port is not specified, the well-known port for the proxy protocol is used (1080
9 for SOCKS, 3128 for HTTPS).
注意,nc 为 mac 内置软件,位于 /usr/bin/nc
,如果通过 brew 安装了 netcat(nc) 则命令参数不一样。
生成并发送密钥
1ssh-keygen -t rsa
然后将公钥 ~/.ssh/id_rsa.pub
复制到目标主机 ~/.ssh/authorized_keys
文件中。
可能出现的问题
Root 登录问题
如果要通过 root 登录,而且是刚安装的系统,则通过 sudo passwd root
修改 root 密码。
同时,最初 SSH 可能默认配置的是禁止 root 通过密码登录,需要编辑 ssh 配置文件 sshd_config,新增行:
1PermitRootLogin yes
密钥算法不匹配
如果出现以下错误:
no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
则是本地密钥算法与远程主机密钥算法不匹配造成的!
可以在ssh_config或config文件中添加密钥算法配置:
1Host 输入代替名
2 HostName 输入IP
3 Port 输入端口号
4 User 输入用户
5 KexAlgorithms +diffie-hellman-group1-sha1