如何将 ssh 密码保存到 vscode?

may*_*513 5 ssh visual-studio-code

我正在使用 vscode 连接到远程主机。我使用 Remote-SSH (ms-vscode-remote.remote-ssh) 扩展来执行此操作。每次想连接远程主机时,都需要输入密码。

有没有办法将ssh密码保存到vscode?

bli*_*web 128

要在 Visual Studio Code 上设置 ssh 的无密码身份验证,请执行以下步骤。

这些示例假设如下(替换为您的实际详细信息)

Host: myhost
Local User: localuser 
Remote User: remoteuser
Remote User Home Dir: remoteuserhome
SSH Port:  22
Run Code Online (Sandbox Code Playgroud)

我使用的是 Mac,因此 Windows 会略有不同,但基本原理是相同的

告诉 VS Code 和您的机器您将如何连接到 myhost

编辑:

/Users/<localuser>/.ssh/config
Run Code Online (Sandbox Code Playgroud)

添加:

Host <myhost>
  HostName <myhost>
  User <remoteuser>
  Port 22
  PreferredAuthentications publickey
  IdentityFile "/Users/<localuser>/.ssh/keys/<myhost>_rsa"
Run Code Online (Sandbox Code Playgroud)

接下来使用 OpenSSL 之类的工具生成公钥和私钥

ssh-keygen -q -b 2048 -P "" -f /Users/<localuser>/.ssh/keys/<myhost>_rsa -t rsa
Run Code Online (Sandbox Code Playgroud)

这应该生成两个文件:

<myhost>_rsa        (private key)
<myhost>_rsa.pub    (public key)
Run Code Online (Sandbox Code Playgroud)

私钥 (<myhost>_rsa) 可以保留在本地 .ssh 文件夹中

需要将公钥(<myhost>_rsa.pub)复制到服务器(<myhost>)

我使用 FTP 完成此操作,但您可以随心所欲地执行此操作,但它需要最终位于服务器上的类似目录中。

在服务器上

服务器上有一个文件,其中包含公钥列表。

 <remoteuserhome>/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

如果已经存在,则需要将 <myhost>_rsa.pub 的内容添加到文件末尾。

如果不存在,您可以使用 <myhost>_rsa.pub 并将其重命名为authorized_keys,权限为600。

如果一切按计划进行,您现在应该可以进入终端并输入

ssh <remoteuser>@<myhost>
Run Code Online (Sandbox Code Playgroud)

并且您应该无需密码即可进入。现在,这同样适用于 Visual Studio Code。

  • 这并没有回答原来的问题。 (43认同)
  • 很好的答案!但不需要复制&lt;host&gt;_rsa.pub文件,只需复制其内容并将其粘贴到服务器上的authorized_keys上。 (5认同)
  • “/Users/&lt;localuser&gt;/.ssh/&lt;myhost&gt;_rsa”应该是“/Users/&lt;localuser&gt;/.ssh/keys/&lt;myhost&gt;_rsa” (4认同)

Von*_*onC 42

我们先回答一下OP的问题:

如何“保存 ssh 密码”?

由于不存在“ssh密码”这个东西,所以“如何保存远程用户密码”的答案是:

VSCode 不支持此功能。

VSCode 建议设置一个 SSH 代理来缓存密码(如果您使用加密密钥)

但如果公钥未正确注册到远程帐户~/.ssh/authorized_key,SSH 守护程序将默认使用远程用户凭据(用户名/密码)。

它通常称为PasswordAuthentication远程用户密码。

SSH 会话不支持缓存该密码。

当使用HTTPS URL时,它仅受 Git 凭证帮助程序支持。
(它遵循操作系统底层凭证管理器)
但我不知道SSH时远程用户密码缓存使用

正如Chagai Friedlander 评论的那样,原始问题的答案是:

不,但您可以使用 SSH 密钥,这样更好。


说到 SSH 密钥:

“ssh 密码”:假设您指的是 ssh密码,这意味着您已经创建了加密的私钥,那么“保存 ssh 密码”意味着缓存该密码,以避免每次要访问远程主机时都输入它。

首先检查您是否可以设置ssh-agent, 以便缓存保护您的私钥的密码。
请参阅“ VSCode:设置 SSH 代理

这假设您正在使用 SSH 密钥,如“ VSCode:连接到远程主机”中所述,并且您没有直接使用远程用户密码。

使用 SSH 密钥意味着其公钥将已注册到远程帐户~/.ssh/authorized_keys文件中。

本节是OP最终接受的解决方法:在远程用户帐户上注册公钥,并缓存本地私钥密码。

  • 这仍然不是“保存 ssh 密码”问题的答案。 (71认同)
  • 它缓存密钥的密码,而不是密码,这通常称为用户名密码身份验证,不应与密码混淆。 (11认同)
  • 我不认为没有任何其他别名可以引用的名称可以被视为另一个概念的“口语”。“ssh密码”,从常识上来说,字面意思就是登录ssh服务器时使用的密码。虽然不推荐,但也不能说它不能有一个明确指代而不造成混淆的名称。如果“ssh 密码”表示私钥密码,那么 ssh 密码又是什么意思呢? (8认同)
  • 我认为正确的答案是“不,但你可以使用 ssh 密钥,这样更好” (6认同)
  • 这个答案与 ssh 密码无关。问题显然是关于保存 ssh 密码凭据,因此不会每次都提示用户。我通常不会发表评论,但搜索会在结果中首先显示此项目。 (3认同)
  • @ShawnCicoria 是的,我在之前的评论中确实提到了“PasswordAuthentication”。VSCode 中的 SSH 会话似乎不支持缓存该密码。 (3认同)

小智 28

对于那些尝试通过https://code.visualstudio.com/docs/remote/troubleshooting#_ssh-tips中提供的 Vscode 远程 SSH 扩展步骤进行连接的人)

对于 Windows(主机)--> Linux(远程)

  1. 在 Windows 中创建 SSH .pub 密钥 ssh-keygen -t rsa -b 4096
  2. 复制 .pub 密钥的内容 (默认路径 C:\Users\username/.ssh/id_rsa.pub)
  3. 通过 SSH 连接到远程计算机并将 pub 密钥的内容附加到授权密钥中echo "pub-key" >> ~/.ssh/authorized_keys