【发布时间】:2020-05-14 13:01:35
【问题描述】:
通过跳转框建立 SSH 连接
大家好,我一直在尝试在 VS Code 上设置我的环境,以便通过我的 Windows 笔记本电脑在远程 Linux 服务器上运行我的代码(通过我大学部门的代理),方法是关注 this tutorial。它工作正常,但每次我连接到主机时,我都需要输入我的密码,并希望通过配置我的 SSH 密钥来避免这种情况 - 似乎我还没有找到正确的方法。
生成密钥
让我们调用我的本地 Windows 机器 local、代理 host1 和最终端点 host2。我在local 上创建了一个私钥/公钥对,将公钥传输到host1,使其现在位于~/.ssh/authorized_keys,并通过在host1 上生成一个新的密钥对并传输公钥来重复该过程在host2。我按照here 的说明生成和传输密钥:
在
local上生成密钥:ssh-keygen -t rsa -b 4096将公钥转移到
host1:
$USER_AT_HOST="your-user-name-on-host@hostname"
$PUBKEYPATH="$HOME\.ssh\id_rsa.pub"
$pubKey=(Get-Content "$PUBKEYPATH" | Out-String); ssh "$USER_AT_HOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '${pubKey}' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
在
host1上生成密钥:ssh-keygen -t rsa -b 4096将公钥转移到
host2:
export USER_AT_HOST="your-user-name-on-host@hostname"
export PUBKEYPATH="$HOME/.ssh/id_rsa.pub"
ssh-copy-id -i "$PUBKEYPATH" "$USER_AT_HOST"
VS 代码配置
然后我根据this编辑了我的config文件,现在看起来如下:
Host host1
HostName host1
User me
ForwardX11 yes
IdentityFile C:\Users\Me\.ssh\id_rsa
Host host2
HostName host2
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -W %h:%p host1
ForwardX11Trusted yes
User me
IdentityFile ~/.ssh/id_rsa
似乎第一次跳转工作正常(我不需要输入两次密码)但在建立连接时仍然要求我输入它。我的猜测是我没有正确配置IdentityFile?当通过 PowerShell 分两步连接时(即 SSH 到 host1 然后 host2),我不需要输入我的密码。我真的很感激任何建议!
【问题讨论】:
-
ssh 服务器必须配置为允许公钥身份验证。我不知道为什么他们不会,但你至少应该验证他们是。
-
感谢@PresidentJamesK.Polk!我认为它被配置为允许公钥认证;我可以使用 PowerShell 先通过 SSH 连接到
host1,然后再连接到host2,而不会提示我输入密码。我认为我的配置文件一定是错误的..?
标签: ssh visual-studio-code proxy public-key