Git bashを使用しています。私は使わなければなりません
eval `ssh-agent.exe`
ssh-add /my/ssh/location/
新しいgit bashを開始するたびに。
Sshエージェントを永続的に設定する方法はありますか?または、Windowsはsshキーを管理する良い方法を持っていますか?
私は新しい人です、詳細なチュートリアルを教えてください、ありがとう!
Git bashセッションでは、~/.profile
または~/.bashrc
にスクリプトを追加できます( 通常、~
は%USERPROFILE%
に設定されます )。セッションがssh-agent
を自動的に起動するために。ファイルが存在しない場合は、作成してください。
これは、GitHubが「 SSHキーパスフレーズの操作 」で説明していることです。
この記事の「 Git for Windowsでのssh-agentの自動起動 」セクションには、エージェントが実行されているかどうかを確認する堅牢なスクリプトがあります。以下はほんの一部です。完全なソリューションについてはGitHubの記事を参照してください。
# This is just a snippet. See the article above.
if ! agent_is_running; then
agent_start
ssh-add
Elif ! agent_has_keys; then
ssh-add
fi
その他のリソース:
" ssh-agentをWindowsコマンドシェルからgitで動作させる "にも同様のスクリプトがありますが、主に上記のGitHubの記事を参照します。これはより堅牢で最新のものです。
PS:これらの手順は、Windows 10 Linux Subsystemで開かれたBashシェルのコンテキスト内であり、Windowsで生成されたSSHキーとWindows上のUbuntuのBashのシンボリックリンクについては言及していません
1)。bashrcに以下を追加して更新します
# Set up ssh-agent
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initializing new SSH agent..."
touch $SSH_ENV
chmod 600 "${SSH_ENV}"
/usr/bin/ssh-agent | sed 's/^echo/#echo/' >> "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
kill -0 $SSH_AGENT_PID 2>/dev/null || {
start_agent
}
else
start_agent
fi
2)次に、$ source ~/.bashrc
を実行して設定を再読み込みします。
上記の手順は https://github.com/abergs/ubuntuonwindows#2-start-an-bash-ssh-agent-on-launch から取得されました
3)SSH構成ファイルを作成します(存在しない場合)。新しいコマンドを作成するには、次のコマンドを使用します:.ssh$ touch config
4)~/.ssh/config
に以下を追加
Host github.com-<YOUR_GITHUB_USERNAME>
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes
Host csexperimental.abc.com
IdentityFile ~/.ssh/id_work_gmail # path to your private key
AddKeysToAgent yes
<More hosts and github configs can be added in similar manner mentioned above>
5)コマンド$ ssh-add ~/.ssh/id_work_gmail
を使用してキーをSSHエージェントに追加すると、sshを使用してgithubアカウントまたはリモートホストに接続できるようになります。たとえば上記のコード例のコンテキストでは:
$ ssh github.com-<YOUR_GITHUB_USERNAME>
または
$ ssh <USER>@csexperimental.abc.com
このSSHエージェントへのキーの追加は、1回のみ実行する必要があります。
6)次に、Windows LinuxサブシステムでBashセッションからログアウトします。つまり、すべてのBashコンソールを再度終了し、新しいコンソールを再起動して、GithubホストまたはSSH configファイルで設定された他のホストへのSSHを試行します。ステップ。
注意:
Bad owner or permissions on ~/.ssh/config
に直面している場合は、コマンドchmod 600 ~/.ssh/config
を使用して許可を更新します。参照: https://serverfault.com/a/253314/9891
上記の手順を実行するには、OpenSSH v 7.2以降が必要です。古いものがある場合は、 https://stackoverflow.com/a/41555393/936494 に記載されている手順を使用してアップグレードできます。
同じ詳細がGistにあります Windows 10 Linux Subsystem SSH-agent issues
ありがとう。
これを実現する最もスムーズな方法は、SSHエージェントおよびplinkとしてPageantを使用することでした。
リモートで使用されるホスト名に対してPuTTYセッションを構成する必要があります。
また、PuTTYと同じサイトからダウンロードできるplink.exeも必要です。
そして、キーをロードしてPageantを実行する必要があります。ログイン時にSSHキーを読み込むスタートアップフォルダーにページェントへのショートカットがあります。
Git-scmをインストールすると、OpenSSHではなくtortoise/plinkを使用するように指定できます。
最終的な効果は、パスフレーズを要求されることなく、好きなときにgit-bashを開いてプッシュ/プルできることです。
同じことが、ページェントにキーがロードされている場合のPuTTYおよびWinSCPセッションにも当てはまります。それは人生をずっと簡単にします(そして安全にします)。
回避策としてWindowsでPuTTYを使用するのは好きではないので、非常に単純なユーティリティ ssh-agent-wrapper を作成しました。 .sshフォルダーをスキャンし、すべてのキーをエージェントに追加します。 Windowsスタートアップフォルダーに配置するだけで機能します。
仮定:
〜ディレクトリに新しい 。bashrc ファイルを作成します。
そこに、bashを起動するたびに実行するコマンドを配置できます
この答え からの単純な2文字列の解決策
sh、bashなど:
# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh
csh、tcshなど:
# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`