web-dev-qa-db-ja.com

SSHキー - まだパスワードとパスフレーズを要求している

私はリポジトリを複製するときにGithubが常に自分のユーザー名とパスワードを要求することで、やや「我慢」してきました。これは私のワークフローでは厄介なので、私はこのステップを迂回したいと思います。

私はこのガイドを使ってSSHキーを設定しようとしました。 https://help.github.com/articles/generating-ssh-keys そして私は成功しました。

私の問題は、リポジトリのクローンを作成するときに(SSHを使用して)私のgithubパスワードとパスフレーズをまだ要求されていることです。私が理解したのは、このSSHキーを設定した後は、それを行う必要はもうないということです。

私は何を尋ねればいいのかわからないので、目標を述べます。

Githubの情報を常に入力しなくてもリポジトリのクローンを作成できるようにしたい

SSHキーに何が欠けていますか?誰かが何らかのガイダンスやリソースを提供することができれば私はそれをいただければ幸いです。なぜならGitHubでのSSH認証に関しては私はいつも少し迷ったからです。

私の知る限りでは、これは問題が正常に機能しているかどうかをテストするコマンドです。これが私のコンソールからの出力です。

~ $ ssh -T [email protected]
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.

パスワードを入力するとき、それは最初に失敗するべきですか?それからパスフレーズを入力すると、パスします。

361
HelloWorld

HTTPsのURLを扱う場合、それは常にあなたのユーザー名/パスワードを尋ねます。

リモートのクローン作成/設定時にSSHを正しく使用しているかそれからあなたがあなたのパスワードを覚えているssh-agentを持っていることを確認してください。そうすれば、ターミナルセッションで一度だけパスフレーズを入力できます。

それでも面倒な場合は、パスフレーズなしでsshキーを設定してください。

135
Simon Boudrias

キーチェーンなしでIDを追加

パスフレーズをキーチェーンに保存したくないが、パスフレーズを何度も入力したくない場合があるかもしれません。

あなたはこのようにすることができます:

ssh-add ~/.ssh/id_rsa 

これでパスフレーズの入力を求められますので入力してください。再起動するまで再度入力することはありません。

キーチェーンを使用してアイデンティティを追加する

@dennisがコメントで指摘しているように、パスフレーズをキーチェーンに保存して再起動してもパスフレーズを保持するには、次のようにIDを追加するときに-Kオプション(Ubuntuの場合は-k)を使用できます。

ssh-add -K ~/.ssh/id_rsa

もう一度、これはあなたにパスフレーズを尋ねるでしょう、それを入力してください、そして今度はそれはこのアイデンティティをもう二度と尋ねません。

645
Komu

Mac OSXでは、次のコマンドを使って秘密鍵をキーチェーンに追加できます。

ssh-add -K /path/to/private_key

あなたの秘密鍵が〜/ .sshに保存されていてid_rsaという名前であるならば:

ssh-add -K ~/.ssh/id_rsa

パスワードの入力を求められます。パスワードはキーチェーンに保存されます。

編集 - 再起動処理

再起動後もパスワードを入力する必要がないようにするために、ssh設定ファイルに以下を追加してください(通常〜/ .ssh/configにあります)

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

私はここですべての答えを試してみました、そして これらの答えはどれもうまくいきませんでした !私のパスワードは私のMacのセッション/再起動の間は持続しません。

私が このOpenRadarこのTwitterについての議論 を読んでいることから私が見つけたのは、MacOS 10.12 Sierraのssh-agentで Appleが意図的に動作を変えた 以前のSSHキーEl Capと同じ振る舞いを維持するために、私は以下をしました:

  1. ssh-add -K ~/.ssh/id_rsa
    注意:パスをid_rsaキーがある場所に変更してください。
  2. ssh-add -A
  3. 次の~/.ssh/configファイルを作成します(存在する場合は編集します)。

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

そして今私のパスワードは私のMacの再起動の間に覚えられている!

172
ChrisJF

鍵のパスフレーズを削除できます

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

またはあなたが実行することができます

$ ssh-keygen -p

キーファイルのプロンプトが表示されます。デフォルトでは~/.ssh/id_rsaなのでenterを押します

現在のパスフレーズを入力するように求められます。

それから新しいパスフレーズのためのプロンプトがあるでしょう、enterを押してください

30
sudo bangbang

次のコマンドを実行するだけです。

ssh-add -K

パスワードの再入力は求められません。

27
user3640130

リポジトリにもsshを使っていることを確認してください

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v Origin [email protected]:eMahtab/jenkins-cje-2017.git (fetch) Origin [email protected]: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)

18
Mahtab Alam

あなたが窓を使っているなら、これは私のために働きました:

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

2番目のコマンドでパスフレーズを要求しますが、それで終わりです。

13
Marina

私は実行しなければならなかった:

eval `ssh-agent -s`
ssh-add

:再起動のたびに、これをもう一度行わなければなりません。

解決策が見つかりました ここ

10
Black

それがそこに説明されているようにssh-agentを試してください: https://help.github.com/articles/working-with-ssh-key-passphrases

この答えは私にとって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 [email protected]:USERNAME/REPOSITORY.git

8
Chris Kevin

Mac OSX Sierraの場合、Open Radarのgithub問題で提案されている修正が私の問題を解決することがわかりました。 Sierraがデフォルトの動作を変更したようです(私はアップグレード後にこの問題を抱え始めました)。

これは私が特に役に立ちました: https://github.com/lionheart/openradar- mirror /issues/15361 #issuecomment-249059061

ssh-add -A 

これにより、私のIDがエージェントに追加されました。 after

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エントリを追加できますが、これがデフォルトの設定です。これは、上記のopenradarリンクのATMでも同様です。

5
zedd45

私はすでにパスフレーズを設定していましたが、何らかの理由でそれを認識できなくなりました。そのため、ssh-add -Kを使用してIDファイルをキーチェーンに再度追加したところ、パスワードの入力を停止しました。

3

LinuxMint/Ubuntu で作業しました

以下の手順を実行してください。

ステップ1:

Goto file => /.ssh/config

以下の行をファイルに保存してください。

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

この行を追加することを忘れないでください AddKeysToAgentはい

ステップ2:

端末を開き、 ssh-add にキーセットを追加します。

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

パスフレーズを入力してください。

2
DhineshYes

問題は、SSHからではなくHTTPSからクローンを作成しているためと思われます。私はここで他のすべての解決策を試しましたが、それでも問題を経験していました。これは私のためにそれをやった。

以下のようにosxkeychain helperを使用します。

  1. それがインストールされているかどうか調べてください。

    git credential-osxkeychain

  2. インストールされていない場合は、Xcode Command Line Toolsの一部としてダウンロードするように求められます。

  3. インストールされている場合は、グローバルなosxkeychain helper設定を使用してcredential.helperを使用するようにGitに指示します。

    git config --global credential.helper osxkeychain

次回HTTPS URLを複製するときは、ユーザー名/パスワードの入力を求められ、OSXキーチェーンへのアクセスを許可するように求められます。初めてこれを実行した後は、キーチェーンに保存する必要があります。もう一度入力する必要はありません。

2
Bryan Perez

私は最近macOS Mojaveにアップグレードし、そしてhomebrew経由でいくつかのツールをインストールしました。それはAppleのバージョンのssh-addを別のものと交換するように見えました。私のデフォルトBSDバージョンのssh-addしませんでした-Kオプションを持っています。これにより、次のエラーが発生しました。

# ssh-add: illegal option -- K

ssh-addを実行すると、自分が持っているwhich ssh-addのバージョンを確認できます。

(私の物は/usr/local/bin/ssh-addに保管されていました)

これを修正するために、私はAppleのバージョンにキーを向けなければなりませんでした

/usr/bin/ssh-add -K ~/.ssh/id_rsa

Git/GitHubはその後完全に機能しました。詳細については、次を参照してください。 エラー:ssh-add:不正なオプション - K

1
aboutaaron

一般的に、パスワードなしでsshを使ってサーバーにリモート接続するための手順は次のとおりです。

  • 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

1
Anang Satria

IdentitiesOnlyをyesに設定しているため、まだパスワードを入力する必要があるかもしれない人に回答を追加したいと思います。これは、複数のキーとIDファイルが原因で、gitまたはserverのキーになることがあります。

鍵を生成してサーバーにコピーした後、

ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub [email protected]

うまくいかなかったことがわかりました。

それから私は~/.ssh/configファイルをチェックしに行きました、私は底でこれを見ました:

Host *
IdentitiesOnly yes

それから私はこれを上に加えます:

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

ssh 12gpuを入力するだけでログインできます。

それからあなたはあなたの好きな名前を使って複数のsshキーを追加することができます、そしてあなたは設定ファイルに上記の4行のような設定を追加するだけでよいです。

Host は後でサーバーに接続するときに入力したい名前です。 HostName は、github.comのようなサーバーのIPまたはドメインです。 User は、githubやgitlabのユーザー名やgitのように、サーバーにログインしたユーザー名です。そして IdentityFile はあなたが生成したキーを保存するファイルです。

1
Lerner Zhang

sshではなくGithubが提供するhttpsリモートURLを使用してください。

0
Lost Koder

GshにsshのURLを使用している場合は、sshのパスワードの入力を求められたら、ユーザー名を「 git 」、パスワードを と入力します - システムのログインパスワード

0

@Sudo bangbangの答えは受け入れられるべきだと思います。

Sshキーを生成するときは、パスワードの設定を求めるプロンプトが表示されたときに「Enter」を押してパスワードの入力をスキップします。

つまり、sshキーを使用するときにパスワードは必要ないので、sshキーを生成するときはパスワードを入力せず、「Enter」を押してスキップすることを忘れないでください。

0
andrava

MobaxtermeはそれのためのUIインターフェースを持っていました

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

0
Amir Heshmati

私と同じ問題と解決策は以下のとおりです。

HttpsからsshにリモートのURLを変換するためにこのgithubドキュメントを見てください。リモートのURLがsshかhttpsかを確認するには、git remote -vを使用します。 httpsからsshに切り替えるには:git remote set-url Origin [email protected]:USERNAME/REPOSITORY.git @jeeYem

0
Bruno Leite

これは私のために働いたものです:git config --global core.sshCommand "'C:\ Windows\System32\OpenSSH\ssh.exe'"

0
daniel sp

あなたがWindowsとGITを使ってで、サードパーティ製のツールを持っておらず、あなたのキーがセキュリティで保護されていないであれば、パスワード/パスフレーズでこれを使います。

  1. 環境変数HOMEはあなたのユーザープロファイルに設定する必要があります(例:C:\ Users\Laptop)
  2. C:\ Users\Laptop\.ssh \フォルダに移動し、"config"ファイルを編集します(またはファイルを作成します)例:C:\ Users\Laptop.ssh\config(注:なし) 。 最後に!)
  3. Git-server Hostを "config"ファイルに以下のように追加してください。

    #Example Host entry
    Host myhostname.com
        HostName myhostname.com
        User git
        IdentityFile c:/users/laptop/.ssh/id_rsa.pub
        PasswordAuthentication no
        Port 422
    
  4. ファイルを保存して次のようにリポジトリを複製します。

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

「config」ファイルのHostエントリに追加の設定パラメータを使用できます。これらはローカルの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,[email protected],hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
0
Fabian Stern