【问题标题】:How to save ssh password to vscode?如何将ssh密码保存到vscode?
【发布时间】:2021-05-12 18:33:56
【问题描述】:

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

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

【问题讨论】:

    标签: visual-studio-code ssh


    【解决方案1】:

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

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

    Host: myhost
    Local User: localuser 
    Remote User: remoteuser
    Remote User Home Dir: remoteuserhome
    SSH Port:  22
    

    我使用的是 Mac,所以 Windows 会有些不同,但基本是一样的

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

    编辑:

    /Users/<localuser>/.ssh/config
    

    添加:

    Host <myhost>
      HostName <myhost>
      User <remoteuser>
      Port 22
      PreferredAuthentications publickey
      IdentityFile "/Users/<localuser>/.ssh/<myhost>_rsa"
    

    接下来使用 OpenSSL 之类的东西生成公钥和私钥

    ssh-keygen -q -b 2048 -P "" -f /Users/<localuser>/.ssh/keys/<host>_rsa -t rsa
    

    这应该生成两个文件:

    <host>_rsa        (private key)
    <host>_rsa.pub    (public key)
    

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

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

    我是用 FTP 做的,但你可以随意做,但它需要在服务器上的类似目录中结束。

    在服务器上

    服务器上有一个文件,里面有一个公钥列表。

     <remoteuserhome>/.ssh/authorized_keys
    

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

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

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

    ssh <remoteuser>@<host>
    

    你应该在没有密码的情况下进入。这同样适用于 Visual Studio Code。

    【讨论】:

    • 很好的答案!但不需要复制 _rsa.pub 文件,只需复制其内容并将其粘贴到服务器上的 authorized_keys 上。
    【解决方案2】:

    让我们先回答OP的问题:

    如何“保存 ssh 密码”?

    由于没有“ssh密码”这回事,所以“如何保存远程用户密码”的答案是:

    VSCode 不支持。

    VSCode 建议setup an SSH Agent 以缓存密码(以防您使用加密密钥)

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

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

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

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

    作为Chagai Friedlandercomments,原问题的答案是:

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


    说到 SSH 密钥:

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

    首先检查您是否可以设置ssh-agent,以便缓存保护您的私钥的密码。
    见“VSCode: Setting up the SSH Agent

    这假设您使用的是 SSH 密钥,如“VSCode: Connect to a remote host”中所述,并且您没有直接使用远程用户密码。

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

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

    【讨论】:

    • 这仍然不是“保存 ssh 密码”问题的答案。
    • 它缓存的是key的passphrase,而不是password,就是俗称的username-password认证,不要和passphrase混淆。
    • 我认为没有任何其他别名可以引用的名称不能被视为对另一个概念的“口语化”。 “ssh 密码”,在一般意义上,字面意思是登录 ssh 服务器时使用的密码。虽然不推荐,但没有办法说它不能有一个清楚地指代它的名字而不会混淆。如果“ssh 密码”表示私钥密码,那么 ssh 密码是什么意思?
    • 我认为正确的答案是“不,但你可以使用 ssh 密钥,这样会更好”
    • @ShawnCicoria 是的,我在之前的评论中确实提到了PasswordAuthentication。并且在 SSH 会话的 VSCode 中似乎不支持缓存该密码。
    猜你喜欢
    • 1970-01-01
    • 2012-02-18
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2021-09-16
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多