私はリポジトリを複製するときに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.
パスワードを入力するとき、それは最初に失敗するべきですか?それからパスフレーズを入力すると、パスします。
HTTPs
のURLを扱う場合、それは常にあなたのユーザー名/パスワードを尋ねます。
リモートのクローン作成/設定時にSSH
を正しく使用しているかそれからあなたがあなたのパスワードを覚えているssh-agentを持っていることを確認してください。そうすれば、ターミナルセッションで一度だけパスフレーズを入力できます。
それでも面倒な場合は、パスフレーズなしでsshキーを設定してください。
パスフレーズをキーチェーンに保存したくないが、パスフレーズを何度も入力したくない場合があるかもしれません。
あなたはこのようにすることができます:
ssh-add ~/.ssh/id_rsa
これでパスフレーズの入力を求められますので入力してください。再起動するまで再度入力することはありません。
@dennisがコメントで指摘しているように、パスフレーズをキーチェーンに保存して再起動してもパスフレーズを保持するには、次のようにIDを追加するときに-K
オプション(Ubuntuの場合は-k
)を使用できます。
ssh-add -K ~/.ssh/id_rsa
もう一度、これはあなたにパスフレーズを尋ねるでしょう、それを入力してください、そして今度はそれはこのアイデンティティをもう二度と尋ねません。
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
私はここですべての答えを試してみました、そして これらの答えはどれもうまくいきませんでした !私のパスワードは私のMacのセッション/再起動の間は持続しません。
私が このOpenRadar と このTwitterについての議論 を読んでいることから私が見つけたのは、MacOS 10.12 Sierraのssh-agentで Appleが意図的に動作を変えた 以前のSSHキーEl Capと同じ振る舞いを維持するために、私は以下をしました:
ssh-add -K ~/.ssh/id_rsa
ssh-add -A
次の~/.ssh/config
ファイルを作成します(存在する場合は編集します)。
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
そして今私のパスワードは私のMacの再起動の間に覚えられている!
鍵のパスフレーズを削除できます
$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
またはあなたが実行することができます
$ ssh-keygen -p
キーファイルのプロンプトが表示されます。デフォルトでは~/.ssh/id_rsa
なのでenterを押します
現在のパスフレーズを入力するように求められます。
それから新しいパスフレーズのためのプロンプトがあるでしょう、enterを押してください
次のコマンドを実行するだけです。
ssh-add -K
パスワードの再入力は求められません。
リポジトリにも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)
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)
あなたが窓を使っているなら、これは私のために働きました:
eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa
2番目のコマンドでパスフレーズを要求しますが、それで終わりです。
それがそこに説明されているように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
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でも同様です。
私はすでにパスフレーズを設定していましたが、何らかの理由でそれを認識できなくなりました。そのため、ssh-add -K
を使用してIDファイルをキーチェーンに再度追加したところ、パスワードの入力を停止しました。
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
パスフレーズを入力してください。
問題は、SSHからではなくHTTPSからクローンを作成しているためと思われます。私はここで他のすべての解決策を試しましたが、それでも問題を経験していました。これは私のためにそれをやった。
以下のようにosxkeychain helper
を使用します。
それがインストールされているかどうか調べてください。
git credential-osxkeychain
インストールされていない場合は、Xcode Command Line Toolsの一部としてダウンロードするように求められます。
インストールされている場合は、グローバルなosxkeychain helper
設定を使用してcredential.helper
を使用するようにGitに指示します。
git config --global credential.helper osxkeychain
次回HTTPS URLを複製するときは、ユーザー名/パスワードの入力を求められ、OSXキーチェーンへのアクセスを許可するように求められます。初めてこれを実行した後は、キーチェーンに保存する必要があります。もう一度入力する必要はありません。
私は最近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
一般的に、パスワードなしで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
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 はあなたが生成したキーを保存するファイルです。
ssh
ではなくGithubが提供するhttps
リモートURLを使用してください。
GshにsshのURLを使用している場合は、sshのパスワードの入力を求められたら、ユーザー名を「 git 」、パスワードを と入力します - システムのログインパスワード
@Sudo bangbangの答えは受け入れられるべきだと思います。
Sshキーを生成するときは、パスワードの設定を求めるプロンプトが表示されたときに「Enter」を押してパスワードの入力をスキップします。
つまり、sshキーを使用するときにパスワードは必要ないので、sshキーを生成するときはパスワードを入力せず、「Enter」を押してスキップすることを忘れないでください。
MobaxtermeはそれのためのUIインターフェースを持っていました
setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]
私と同じ問題と解決策は以下のとおりです。
HttpsからsshにリモートのURLを変換するためにこのgithubドキュメントを見てください。リモートのURLがsshかhttpsかを確認するには、git remote -vを使用します。 httpsからsshに切り替えるには:git remote set-url Origin [email protected]:USERNAME/REPOSITORY.git @jeeYem
これは私のために働いたものです:git config --global core.sshCommand "'C:\ Windows\System32\OpenSSH\ssh.exe'"
あなたがWindowsとGITを使ってで、サードパーティ製のツールを持っておらず、あなたのキーがセキュリティで保護されていないであれば、パスワード/パスフレーズでこれを使います。
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
ファイルを保存して次のようにリポジトリを複製します。
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