私はgit bashを使用しています。私は使用する必要があります
eval `ssh-agent.exe`
ssh-add /my/ssh/location/
新しいgit bashを開始するたびに。
sshエージェントを永続的に設定する方法はありますか?または、Windowsにはsshキーを管理する良い方法がありますか?
私は新しい人です、詳細なチュートリアルを教えてください、ありがとう!
私はgit bashを使用しています。私は使用する必要があります
eval `ssh-agent.exe`
ssh-add /my/ssh/location/
新しいgit bashを開始するたびに。
sshエージェントを永続的に設定する方法はありますか?または、Windowsにはsshキーを管理する良い方法がありますか?
私は新しい人です、詳細なチュートリアルを教えてください、ありがとう!
回答:
gitのbashのセッションでは、あなたはにスクリプトを追加することができます~/.profile
か~/.bashrc
(と~
通常に設定して%USERPROFILE%
自動的に起動すると、セッションのために、) ssh-agent
。ファイルが存在しない場合は、作成してください。
これは、「SSHキーパスフレーズの操作」で GitHubが説明していることです。
この記事の「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
その他のリソース:
「Windowsコマンドシェルからgit runでssh-agentを動作させる」も同様のスクリプトですが、主に上記のGitHubの記事を参照します。
PS:これらの手順は、Windows 10 Linuxサブシステムで開かれた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コンソールを終了し、新しいコンソールを再度起動して、SSH構成ファイルで構成されているGithubホストまたは他のホストにSSHで接続します。追加の構成は必要ありません。ステップ。
注意:
直面している場合はBad owner or permissions on ~/.ssh/config
、コマンドを使用して権限を更新しますchmod 600 ~/.ssh/config
。リファレンス:https : //serverfault.com/a/253314/98910
上記の手順を実行するには、OpenSSH v 7.2以降が必要です。古いものがある場合は、https://stackoverflow.com/a/41555393/936494で説明されている手順を使用してアップグレードできます。
同じ詳細がWindows 10 LinuxサブシステムのSSHエージェントの要点に記載されています。
ありがとう。
>> "${SSH_ENV}"
。それだけじゃないの> "${SSH_ENV}"
?もちろん、あなたの作品は機能し~/.ssh/environment
ますが、ファイルはゆっくりと長くなっていきます(私が現在考えているように!?)理由はありません... このスクリプトは.bashrc
WSL Ubuntu のデフォルトに含める必要があると思います。とても便利です。
これを実現する最もスムーズな方法は、PageantをSSHエージェントおよびplinkとして使用することです。
リモートで使用されるホスト名用に構成されたputtyセッションが必要です。
puttyと同じサイトからダウンロードできるplink.exeも必要です。
そして、あなたはあなたのキーをロードしてPageantを走らせる必要があります。ログイン時にSSH鍵をロードするページェントへのショートカットがスタートアップフォルダーにあります。
git-scmをインストールすると、OpenSSHではなくtortoise / plinkを使用するように指定できます。
最終的な効果は、好きなときにいつでもgit-bashを開いて、パスフレーズの入力を求められることなくプッシュ/プルできることです。
同じことが、ページェントにキーが読み込まれているパテおよびWinSCPセッションにも当てはまります。それは人生を非常に簡単にします(そして安全にします)。
回避策としてWindowsでputtyを使用したくないので、非常に単純なユーティリティssh-agent-wrapperを作成しました。.sshフォルダーをスキャンし、すべてのキーをエージェントに追加します。それを機能させるには、Windowsのスタートアップフォルダーに置く必要があります。
仮定:
おそらく私がこのようなPCの初心者であり、明らかなものがないためか、最良の回答に基づいてこれを機能させることができませんでした。しかし、私と同じように挑戦的な人を助けるための参考までに、最後に機能したのはここのリンクの1つでした(回答で参照されています)。これには、次のものを単にmyに貼り付けるだけでした.bash_profile
。
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
奇妙な設定をしている可能性がありますが、.profile
やに追加したときにうまくいきませんでした.bashrc
。私が遭遇した他の本当の課題は、私がこのコンピューターの管理者ではないため、ITの承認を得ずに環境変数を変更できないため、これはそれにアクセスできない人のためのソリューションです。
git bashを開いたときにsshパスワードの入力を求められた場合は、正常に機能しています。ハレルヤ何かがようやく機能しました。
〜ディレクトリに新しい.bashrcファイルを作成します。
そこで、bashを起動するたびに実行したいコマンドを置くことができます
.bashrc
、ファイル(のようにecho test
、あなたがGitのバッシュを実行すると、それがロードされるかどうかを確認します。
.bashrc
、ユーザーフォルダに入れますC:\Users\john
。
この答えからの単純な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`
/my/ssh/location/
ようなものに等しい/c/Users/Foobar/.ssh/
ですか?