首页 文章

SSH密钥 - 仍然要求输入密码和密码

提问于
浏览 653
313

当我克隆存储库时,我总是在某种程度上“忍受”Github总是询问我的用户名和密码 . 我想绕过这一步,因为这是我工作流程中的一个烦恼 .

我尝试使用本指南设置SSH密钥(我成功地做了) . https://help.github.com/articles/generating-ssh-keys我成功了 .

我的问题是,在克隆存储库时(使用SSH),我仍然被要求输入我的github密码和密码 . 我的理解是,在设置此SSH密钥后,我不再需要这样做了 .

我有点不确定要问什么,所以我只是陈述我的目标 .

我希望能够克隆存储库而无需一直输入我的Github信息 .

我的SSH密钥丢失了什么?如果有人可以提供一些指导或资源,我会很感激,因为在GitHub中进行SSH身份验证时,我总是感到有些失落 .

据我所知,这是一个测试事情是否正常工作的命令,这是我控制台的输出:

~ $ ssh -T git@github.com
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.

当我输入密码时,首先应该失败吗?然后,当我输入我的密码时,它会通过 .

22 回答

  • 553

    添加没有钥匙串的身份

    有时您可能不希望密码链中存储密码,但不希望一遍又一遍地输入密码 .

    你可以这样做:

    ssh-add ~/.ssh/id_rsa
    

    这将要求您输入密码,输入密码,直到您重新启动它才会再次询问 .

    使用钥匙串添加身份

    正如@dennis在评论中指出的那样,要通过将密码存储在钥匙串中来重新启动密码,您可以在添加如下身份时使用 -K 选项( -k 用于Ubuntu):

    ssh-add -K ~/.ssh/id_rsa
    

    再次,这将要求您输入密码,输入密码,这次它永远不会再询问此身份 .

  • 197

    在Mac OSX上,您可以使用以下命令将私钥添加到钥匙串:

    ssh-add -K /path/to/private_key
    

    如果您的私钥存储在〜/ .ssh并且名为id_rsa:

    ssh-add -K ~/.ssh/id_rsa
    

    然后,系统将提示您输入密码,密码将存储在您的钥匙串中 .

    Edit - Handle restart

    为了不必在重新启动后填写您的密码,请将以下内容添加到您的ssh配置文件中(通常位于〜/ .ssh / config)

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    
  • 169

    只需运行以下命令:

    ssh-add -K
    

    它永远不会要求您再次输入密码 .

  • 115

    如果您使用 HTTPs 网址,它将始终询问您的用户名/密码 .

    如果您在克隆/设置遥控器时正确使用 SSH . 然后确保您有一个ssh-agent来记住您的密码 . 这样,您只需通过终端会话输入一次密码 .

    如果它仍然太烦人,那么只需设置一个没有密码短语的ssh-key .

  • 27

    这个答案在 Ubuntu 为我工作 .

    请参阅此GitHub文档,将远程的URL从https转换为ssh . https://help.github.com/articles/changing-a-remote-s-url/
    要检查远程URL是ssh还是https,请使用 git remote -v .

    要从https切换到ssh:
    git remote set-url origin git@github.com:USERNAME/REPOSITORY.git

  • 27

    问题似乎是因为你是从HTTPS而不是SSH克隆的 . 我在这里尝试了所有其他解决方案,但仍然遇到问题 . 这样做对我来说 .

    像这样使用 osxkeychain helper

    • 了解您是否安装了它 .

    git credential-osxkeychain

    • 如果未安装,则会提示您将其作为Xcode命令行工具的一部分下载 .

    • 如果已安装,请告诉Git使用 osxkeychain helper 使用全局 credential.helper 配置:

    git config --global credential.helper osxkeychain

    下次克隆HTTPS网址时,系统会提示您输入用户名/密码,并授予对OSX密钥链的访问权限 . 在您第一次执行此操作后,它应保存在您的钥匙串中,您不必再次输入它 .

  • 16

    如果您使用的是Windows,这对我有用:

    eval `ssh-agent -s`
    ssh-add ~/.ssh/*_rsa
    

    它会在第二个命令中要求密码,就是这样 .

  • 9

    对我来说同样的问题,解决方案是:

    请参阅此github文档,将远程的URL从https转换为ssh . 要检查远程URL是ssh还是https,请使用git remote -v . 要从https切换到ssh:git remote set-url origin git@github.com:USERNAME / REPOSITORY.git @jeeYem

  • 8

    如果您是 using Windows and GIT 没有第三方工具,并且您的密钥是 not secured ,请使用以下密码/密码:

    • 环境变量 HOME 必须设置为您的用户配置文件(例如C:\ Users \ Laptop)

    • 转到C:\ Users \ Laptop \ .ssh \文件夹和 edit "config" file (或创建文件!)示例:C:\ Users \ Laptop.ssh \ config(注意:最后没有 . )

    • 将git-server主机添加到“config”文件中,如下所示:

    #Example host entry
    Host myhostname.com
        HostName myhostname.com
        User git
        IdentityFile c:/users/laptop/.ssh/id_rsa.pub
        PasswordAuthentication no
        Port 422
    
    • 保存文件并克隆存储库,如下所示:

    git clone ssh://myhostname.com/git-server/repos/picalc.git

    您可以为"config"文件主机条目使用其他配置参数 . 这些可以在您的本地git安装文件夹中找到,例如“ C:\Program Files\Git\etc\ssh\ssh_config ” . 摘抄:

    # Host *
    #   ForwardAgent no
    #   ForwardX11 no
    #   RhostsRSAAuthentication no
    #   RSAAuthentication yes
    #   PasswordAuthentication yes
    #   HostbasedAuthentication no
    #   GSSAPIAuthentication no
    #   GSSAPIDelegateCredentials no
    #   BatchMode no
    #   CheckHostIP yes
    #   AddressFamily any
    #   ConnectTimeout 0
    #   StrictHostKeyChecking ask
    #   IdentityFile ~/.ssh/identity
    #   IdentityFile ~/.ssh/id_rsa
    #   IdentityFile ~/.ssh/id_dsa
    #   IdentityFile ~/.ssh/id_ecdsa
    #   IdentityFile ~/.ssh/id_ed25519
    #   Port 22
    #   Protocol 2
    #   Cipher 3des
    #   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
    #   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
    #   EscapeChar ~
    #   Tunnel no
    #   TunnelDevice any:any
    #   PermitLocalCommand no
    #   VisualHostKey no
    #   ProxyCommand ssh -q -W %h:%p gateway.example.com
    #   RekeyLimit 1G 1h
    
  • 7

    如果您使用ssh url for git,当提示输入ssh的密码时,请将用户名设置为“git”,将密码作为系统的登录密码

  • 4

    我想为那些可能仍然需要输入密码的人添加一个答案,因为他们已将IdentitiesOnly设置为yes . 这可能是由多个密钥和身份文件引起的,它们是git或服务器的密钥 .

    生成密钥并将其复制到服务器后:

    ssh-keygen
    ssh-copy-id -i ~/.ssh/12gpu_server.pub lerner@192.168.20.160
    

    我发现它不起作用 .

    然后我去检查了 ~/.ssh/config 文件,我在底部看到了这个:

    Host *
    IdentitiesOnly yes
    

    然后我在上面添加:

    Host 12gpu
    HostName 192.168.20.160
    User lerner
    IdentityFile ~/.ssh/12gpu_server
    

    我只需输入 ssh 12gpu 即可登录 .

    然后,您可以使用自己喜欢的名称添加多个ssh密钥,并且只需将上述四行的设置添加到配置文件中 .

    Host 是您稍后连接到服务器时要输入的名称; HostName 是服务器的IP或域名,如github.com; User 是您在服务器中登录的用户名,如github或gitlab的用户名或git;并且 IdentityFile 是存储您生成的密钥的文件 .

  • 4

    Mobaxterme有一个UI界面

    setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]

  • 3

    您可以删除密钥的密码

    $ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
    

    或者你可以跑

    $ ssh-keygen -p
    

    你得到一个密钥文件的提示 . 默认情况下 ~/.ssh/id_rsa 所以按回车键

    系统将提示您输入当前密码短语 .

    然后会出现新的密码短语,按回车键

  • 2

    在LinuxMint / Ubuntu工作

    添加以下行

    Step 1:

    file => /.ssh/config

    Host bitbucket.org
        HostName bitbucket.org
        User git
        IdentityFile /home/apple/myssh-privatekey
        AddKeysToAgent yes
    

    不要忘记添加此行AddKeysToAgent是

    Step 2:

    打开终端并将密钥集添加到 ssh-add

    $ ssh-add -k /home/apple/myssh-privatekey
    

    提供密码 .

  • 1

    对于Mac OSX Sierra,我发现在Open Radar的github问题中提出的修复修复了我的问题 . 好像Sierra改变了默认行为(升级后我开始遇到这个问题) .

    我发现这个特别有用:https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061

    ssh-add -A
    

    在我跑完之后,这导致我的身份被添加到代理

    ssh-add -K {/path/to/key}
    

    总结一下,在OSX.12中:

    ssh-add -K {/path/to/key}
    ssh-add -A
    

    应该导致:

    Identity added: {/path/to/file} ({/path/to/file})
    

    编辑:我注意到下次我完全重新启动(也就是代理停止并重新启动)这不再有效 . 更完整的解决方案是@ChrisJF上面提到的:创建 ~/.ssh/config 文件 . 这是我的输出:

    $ cat ~/.ssh/config
    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

    您可以根据需要添加任意数量的 IdentityFile 条目,但这是默认设置 Build . 这是上面的openradar链接ATM上的"trending"答案 .

  • 1

    我已经设置了一个密码,但由于某种原因它不再能识别它 . 所以我只是使用 ssh-add -K 再次将身份文件添加到我的钥匙串中,它停止询问我的密码 .

  • 0

    我在这里尝试了所有的答案和 none of these answers worked !我的密码不会在我的Mac的会话/重启之间保持不变 .

    我在阅读this OpenRadarthis Twitter discussion时发现,对于macOS 10.12 Sierra中的ssh-agent,Apple purposely changed the behaviour不再自动加载以前的SSH密钥 . 为了保持与El Cap相同的行为,我做了以下事情:

    • ssh-add -K ~/.ssh/id_rsa
      注意:更改id_rsa键所在的路径 .

    • ssh-add -A

    • 创建(或编辑,如果存在)以下 ~/.ssh/config 文件:

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

    现在我的密码会在我的Mac重启之间被记住!

  • 0

    确保您还使用ssh作为存储库

    mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin git@github.com:eMahtab/jenkins-cje-2017.git (fetch) origin git@github.com:eMahtab/jenkins-cje-2017.git (push)

    enter image description here

    不要使用https,如果您的遥控器使用https,那么它将继续询问密码,即使您已将公钥添加到Github并将私钥添加到ssh-agent . 以下将始终要求输入密码

    mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)

  • 0
  • 0

    我不得不执行:

    eval `ssh-agent -s`
    ssh-add
    

    Note :每次重启后都必须再次执行此操作 .

    找到解决方案here .

  • 0

    通常,以下是允许您使用ssh在没有密码的情况下与服务器 Build 远程连接的步骤:

    • 创建一对rsa私钥和公钥
    $ ssh-keygen -t rsa -b 4096 -C "your comments"
    
    • 复制您的公钥并登录到您的远程服务器

    • 将您的公钥添加到.ssh / authorized_keys

    • 如果您的计算机中有多个ssh密钥,则可以使用ssh-add添加密钥

    $ ssh-add /path/to/private/key

    • 然后尝试ssh到您的服务器

    $ ssh username@your_ip_address

    资料来源:http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html

  • 0

    使用Github提供的 ssh 远程URL而不是 https .

相关问题