如果你已经连接了一台Linux Ubuntu/Debian服务器A,又已知另一台Linux服务器B的私钥(Private Key),可以直接使用这个PrivateKey登录服务器B。
为了方便,假设服务器B的IP地址是192.168.2.1
1. 在 A 上保存 B 的私钥
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/openwrt_b.key
把私钥完整内容粘贴进去,必须包含类似:
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
保存后设置权限:
chmod 600 ~/.ssh/openwrt_b.key
如果私钥文件已经在 A 的某个位置,也可以直接复制:
cp /path/to/private_key ~/.ssh/openwrt_b.key
chmod 600 ~/.ssh/openwrt_b.key
2. 测试是否能登录 B
ssh -i ~/.ssh/openwrt_b.key root@192.168.2.1
如果能直接登录,说明私钥有效,且 B 上已经有对应公钥。
3. 配置 A 的 SSH,使 ssh 192.168.2.1 自动使用私钥
编辑:
nano ~/.ssh/config
chmod 600 ~/.ssh/config
写入:
Host 192.168.2.1
HostName 192.168.2.1
User root
IdentityFile ~/.ssh/openwrt_b.key
IdentitiesOnly yes
如果 B 的 SSH 端口不是 22,再加一行:
Port 你的端口
以后在 A 上直接执行:
ssh 192.168.2.1
就会自动以 root 用户和 ~/.ssh/openwrt_b.key 私钥登录 B,不再需要输入密码。
4. 如果私钥本身有密码
如果这个私钥设置了 passphrase,那么 SSH 还会提示输入私钥密码。要完全免输,可以:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/openwrt_b.key
或者去掉私钥密码:
ssh-keygen -p -f ~/.ssh/openwrt_b.key
但去掉密码会降低安全性,任何人拿到这个私钥文件都能登录 B。
5. 注意事项
- 私钥必须放在持久化目录,例如
/root/.ssh/ 或 /home/用户名/.ssh/,不要放 /tmp。
.ssh 权限建议 700,私钥权限必须是 600。
- 如果 A 上用普通用户执行
ssh,配置要放在该普通用户的 ~/.ssh/config,不是 /root/.ssh/config。
- 登录 B 的用户不一定是
root,按实际改 User。
- 如果你手里的“B 服务器私钥”其实是 OpenWRT 的 host key 主机私钥,那不是用户登录私钥,不能直接拿来登录。用户登录需要的是:私钥在 A,公钥在 B 的
/etc/dropbear/authorized_keys 或 /root/.ssh/authorized_keys。
一句话:私钥放 A 的 ~/.ssh/openwrt_b.key,权限 600,然后在 ~/.ssh/config 里给 192.168.2.1 指定 IdentityFile 和 User,以后 ssh 192.168.2.1 就能免密登录。
#ssh命令 #密钥 #私钥