回答:
私から.ssh/config
:
Host myshortname realname.example.com
HostName realname.example.com
IdentityFile ~/.ssh/realname_rsa # private key for realname
User remoteusername
Host myother realname2.example.org
HostName realname2.example.org
IdentityFile ~/.ssh/realname2_rsa # different private key for realname2
User remoteusername
等々。
IdentityFile
同じに対して複数のエントリを指定することもできHost
、接続時に順番に試行されることに注意してください。
IdentitiesOnly yes
〜/ .ssh / id_rsaまたはその他のIDを防止するために使用します。(これは元々編集
接続時に複数のキーを続けて試すようにsshに指示できます。方法は次のとおりです。
$ cat ~/.ssh/config
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_rsa_old
IdentityFile ~/.ssh/id_ed25519
# ... and so on
$ ssh server.example.com -v
....
debug1: Next authentication method: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: Trying private key: /home/example/.ssh/id_rsa_old
debug1: read PEM private key done: type RSA
....
[server ~]$
これにより、どのサーバーでどのキーが機能するかを指定する必要がなくなります。最初の有効なキーを使用します。
また、特定のサーバーがキーを受け入れる用意がある場合にのみ、パスフレーズを入力します。上記のように、sshはパスワードを.ssh/id_rsa
持っている場合でもパスワードを要求しませんでした。
確かに、他の回答のようにサーバーごとの構成に勝るものはありませんが、少なくとも、接続するすべてのサーバーの構成を追加する必要はありません。
ランダルシュワルツからの回答は、ほとんどの場合私を助けてくれました。サーバーに別のユーザー名があるため、ファイルにUserキーワードを追加する必要がありました。
Host friendly-name
HostName long.and.cumbersome.server.name
IdentityFile ~/.ssh/private_ssh_file
User username-on-remote-machine
これで、フレンドリ名を使用して接続できます。
ssh friendly-name
OpenSSHのmanページで他のキーワードを見つけることができます。注記:リストされているキーワードの一部は、/ etc / ssh / ssh_configファイルにすでに存在している場合があります。
以前の回答では、複数のsshキーを管理する構成ファイルを作成する方法を適切に説明しました。また、説明が必要な重要なことは、リポジトリのクローン作成中にホスト名をエイリアス名に置き換えることです。
あなたの、仮定の会社のGitHubのアカウントのユーザー名がABC1234です。また、個人のGitHubアカウントのユーザー名がjack1234であるとします。
また、id_rsa_companyとid_rsa_personalの 2つのRSA鍵を作成したとします。したがって、構成ファイルは次のようになります。
# Company account
Host company
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company
# Personal account
Host personal
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal
これで、会社のGitHubアカウントからリポジトリ (デモという名前)のクローンを作成すると、リポジトリのURLは次のようになります。
Repo URL: git@github.com:abc1234/demo.git
ここで、を実行git clone
するときに、上記のリポジトリURLを次のように変更する必要があります。
git@company:abc1234/demo.git
構成ファイルで定義したように、github.comがエイリアス「company」に置き換えられていることに注意してください。
同様に、設定ファイルで提供されるエイリアスに応じて、個人アカウントのリポジトリのクローンURLを変更する必要があります。
ssh-add ~/.ssh/xxx_id_rsa
追加する前に必ずテストしてください:
ssh -i ~/.ssh/xxx_id_rsa username@example.com
エラーの問題がある場合は、ファイルのセキュリティを変更すると役立つことがあります。
chmod 0600 ~/.ssh/xxx_id_rsa
SSHキーを生成します。
$ ssh-keygen -t rsa -C <email1@example.com>
別のSSHキーを生成します。
$ ssh-keygen -t rsa -f ~/.ssh/accountB -C <email2@example.com>
これで、2つの公開鍵(id_rsa.pub、accountB.pub)が~/.ssh/
ディレクトリに存在するはずです。
$ ls -l ~/.ssh # see the files of '~/.ssh/' directory
~/.ssh/config
次の内容の構成ファイルを作成します。
$ nano ~/.ssh/config
Host bitbucket.org
User git
Hostname bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host bitbucket-accountB
User git
Hostname bitbucket.org
PreferredAuthentications publickey
IdentitiesOnly yes
IdentityFile ~/.ssh/accountB
default
アカウントから複製します。
$ git clone git@bitbucket.org:username/project.git
accountB
アカウントからクローンを作成します。
$ git clone git@bitbucket-accountB:username/project.git
ssh-agentの使用についてTuomasに同意します。また、仕事用に2つ目の秘密鍵を追加したかったのですが、このチュートリアルは私にとって魅力的なものでした。
手順は次のとおりです。
$ ssh-agent bash
$ ssh-add /path.to/private/key
例えば ssh-add ~/.ssh/id_rsa
$ ssh-add -l
$ssh -v <host url>
たとえば、それをテストしますssh -v git@assembla.com
ssh-agent
長年使用してきたが、最近gnome-keyring
、私のi3
wm 内でGnomeを使用するように切り替えた。理由は簡単です。Gnomeのキーリングマネージャーは、sshキーの追加と削除を自動的に処理するので、覚えておく必要はありませんssh-add
。さらに、それらをロック解除するための単一のパスワードを提供します(およびセキュリティのために、指定された時間にタイムアウトします)。それぞれ自分自身に。私はArchでgnome設定を使用しているため、私の設定ではプラグアンドプレイでした。あなたが反ノームであるなら、このコメントを無視してください。
2つのBitbucketアカウントがあり、両方に個別のSSHキーを保存する必要があったとき、私はしばらく前にこの問題に遭遇しました。これは私のために働いたものです。
次のように2つの個別のssh構成を作成しました。
Host personal.bitbucket.org
HostName bitbucket.org
User git
IdentityFile /Users/username/.ssh/personal
Host work.bitbucket.org
HostName bitbucket.org
User git
IdentityFile /Users/username/.ssh/work
仕事用アカウントからリポジトリのクローンを作成する必要があったとき、コマンドは次のとおりです。
git clone git@bitbucket.org:teamname/project.git
このコマンドを次のように変更する必要がありました。
git clone git@**work**.bitbucket.org:teamname/project.git
同様に、私の個人アカウントのクローンコマンドを次のように変更する必要がありました。
git clone git @ personal .bitbucket.org:name / personalproject.git
詳細については、このリンクを参照してください。
あなたは、名前の設定ファイルを作成することができconfig
、あなたの中に~/.ssh
フォルダを。以下を含むことができます:
Host aws
HostName *yourip*
User *youruser*
IdentityFile *idFile*
これにより、このようなマシンに接続できます
ssh aws
1.0 SSH設定ファイル
1.1作成〜/ .ssh / config
1.2 chmod 600〜/ .ssh / config(必須)
1.3以下をファイルに入力します。
ホストピザ
HostName github.com
PreferredAuthentications publickey#オプション
IdentityFile〜/ .ssh / privatekey1
ケースA:FRESH NEW GIT CLONE
このコマンドを使用してgit cloneします。
$ git clone git @ pizza:yourgitusername / pizzahut_repo.git
注:将来.ssh / configのホスト名「pizza」を変更する場合は、gitクローンフォルダーに移動し、.git / configファイルのurl行を編集します(ケースBを参照)
ケースB:GIT CLONE FOLDERがすでにある
2.1クローンされたフォルダに移動し、次に.gitフォルダに移動します
2.2設定ファイルを編集する
2.3 URLを古いものから新しいものに更新します。
(Old) url = git@github.com:yourgitusername/pizzahut_repo.git
(New) url = git@pizza:yourgitusername/pizzahut_repo.git
上のUbuntu 18.04(バイオニックビーバーは)何の関係もありません。
2番目のSSHキーが正常に作成された後、システムは各接続に対して一致するSSHキーを見つけようとします。
明確にするために、次のコマンドで新しいキーを作成できます。
# Generate key make sure you give it a new name (id_rsa_server2)
ssh-keygen
# Make sure ssh agent is running
eval `ssh-agent`
# Add the new key
ssh-add ~/.ssh/id_rsa_server2
# Get the public key to add it to a remote system for authentication
cat ~/.ssh/id_rsa_server2.pub
複数のsshキーを維持するために、この sshmulti npmパッケージを試すことができます。
これは、@ sajib-khanの回答からヒントを得て使用したソリューションです。デフォルトの構成は設定されていません。これはgitlabの個人アカウントであり、指定されたもう1つは会社アカウントです。ここで私がしたこと:
ssh-keygen -t rsa -f ~/.ssh/company -C "name.surname@company.com"
nano ~/.ssh/config
Host company.gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/company
ssh-add -D
ssh -T git@company.gitlab.com
GitLabへようこそ、@ hugo.sohm!
ssh -T git@gitlab.com
@HugoSohmのGitLabへようこそ!
企業アカウント
$ git clone git@company.gitlab.com:group/project.git
個人/デフォルトのアカウント
$ git clone git@gitlab.com:username/project.git
これが私が使用したソースです、それが役に立てば幸いです!
〜/ .ssh / configに以下を設定するアプローチが大好きです:
# Config for Github to support multiple Github keys
Host github.com
HostName github.com
User git
# UseKeychain adds each keys passphrase to the keychain so you don't have to enter the passphrase each time.
UseKeychain yes
# AddKeysToAgent would add the key to the agent whenever it is used, which might lead to debugging confusion since then sometimes the one repo works and sometimes the other depending on which key is used first.
# AddKeysToAgent yes
# I only use my private id file so all private repos don't need the env var `GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa"` to be set.
IdentityFile ~/.ssh/id_rsa
次に、リポジトリで、.env
使用するsshコマンドを含むファイルを作成できます。
GIT_SSH_COMMAND="ssh -i ~/.ssh/your_ssh_key"
次に、たとえばdotenvを使用すると、環境変数が自動的にエクスポートされ、プロジェクトやディレクトリごとに必要なキーを指定できます。パスフレーズはキーチェーンに追加されるため、一度だけ要求されます。
このソリューションはgitで完全に動作し、Macで動作するように設計されています(のためUseKeychain
)。
上のCentOS 6.5がOpenSSH_5.3p1とOpenSSL 1.0.1e-FIPSを実行している、私はそれらのいずれもが、デフォルトの名前がなかったので、私のキーファイルの名前を変更することで問題を解決しました。
私の.sshディレクトリにはid_rsa_fooとid_rsa_barが含まれていますが、id_rsaなどは含まれていません。
-i
オプションを使用しても、のような結果になる可能性がありますno such identity: /home/embo/.ssh/id_rsa: No such file or directory
。
上で述べたようにアトラシアンブログページ、生成する設定内のファイルの.ssh次のテキストを含め、フォルダを:
#user1 account
Host bitbucket.org-user1
HostName bitbucket.org
User git
IdentityFile ~/.ssh/user1
IdentitiesOnly yes
#user2 account
Host bitbucket.org-user2
HostName bitbucket.org
User git
IdentityFile ~/.ssh/user2
IdentitiesOnly yes
次に、サフィックスドメインを使用してチェックアウトし、プロジェクト内で作成者名などをローカルで構成できます。