ssh-agentが設定されていません(SSH_AUTH_SOCKおよびSSH_AGENT_PID環境変数は設定されていません)。

ssh-agentが設定されていません(SSH_AUTH_SOCKおよびSSH_AGENT_PID環境変数は設定されていません)。

Kubuntu 12.04で友達の新しいユーザーアカウントを設定しました。彼がそれを使用すると、ssh次のエラーが発生します。

認証プロキシへの接続を開くことができません。

ssh私たちはいくつかのbashスクリプトを実行しています。

このエラーを引き起こす可能性のあるさまざまな要因を調べて、次の解決策を見つけました。

$ eval `ssh-agent -s`
$ ssh-add ~/.ssh/some_id_rsa

sshその後、期待どおりにコマンド(およびbashスクリプト)を実行できます。

次の2つのコマンドを実行する前に、環境変数が端末に設定されていませんでした。

$ echo $SSH_AGENT_PID

$ echo $SSH_AUTH_SOCK

$ 

コマンドを実行すると、環境変数が期待どおりに設定されます。ただし、設定は保持されません(たとえば、他のシェル全体や再起動中など)。

私は彼が環境変数を設定するためにこれらの2つのコマンドを実行する必要がないように彼のコンピュータを設定する方法を知りたいと思います。私のコンピュータで実行する必要はありません。これまで私は私たちのマシンの間に何の違いも見ませんでした。

マニュアルページでこの情報を見ましたが、Ubuntuが通常プロキシを自動的に設定する方法や、友達のコンピュータで何が起こっているのかを知らせていなかったため、この情報は彼には機能しませんでした。

プロキシを設定するには2つの主な方法があります。 1つ目は、プロキシがいくつかの環境変数をエクスポートする新しいサブコマンドを起動することです。
ssh-agent xterm &。 2 つ目は、エージェントの印刷 (sh(1) または csh(1) 構文生成可能) に必要なシェルコマンドで、呼び出しシェルで評価できます。 eval `ssh-agent -s`
sh(1) や ksh(1) などの Bourne 型シェルの場合eval `ssh-agent -c` csh(1) およびその派生物の場合。

インストールacctして再起動すると、次の結果が出力されますlastcomm

ssh-agent         F    newuser __         0.12 secs Wed Aug  7 11:02
ssh-agent         F    newuser __         0.00 secs Wed Aug  7 20:34
ssh-agent         F    newuser __         0.02 secs Wed Aug  7 20:02
ssh-agent         F    newuser __         0.01 secs Thu Aug  8 12:39
ssh-agent         F    newuser __         0.02 secs Thu Aug  8 07:45

マニュアルページから:

F  - コマンドは分岐後に実行されますが、後続の実行はありません。

これが重要かどうかはわかりません。

ベストアンサー1

~のため

$ eval `ssh-agent -s`

「開始スクリプト」を置くときにセッションと最終的に環境があると予想される端末は、そのスクリプトの子でなければなりません(およびforkexec。その理由は、評価時に出力にssh-agent -s環境変数が設定されているためです。シェルから呼び出されるeval。そこから伝えられたかもしれませんし、途中で失われたかもしれません。

したがって、ssh-agentログイン中にスクリプトAによって実行されますが、シェルスクリプトを起動した端末Bは次のようになります。子孫ではないAの環境であれば、Bの環境を見ることができません。

ssh-agentサービスで始まる場合は、systemd --userルールを使用する必要があります。つまり、ssh-agent 変数を指定せずにエージェントを起動し、セッションを開始するときは常識に従ってください。たとえば、私の ~/.config/systemd/user/ssh-agent.service外観は次のとおりです。

[Unit]
Description=SSH agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target

私には~/.profileこの行があります。

export SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"

%t前者が${XDG_RUNTIME_DIR}後者に該当することに注意してください。

メモ:私はこれについて満足していません!

おすすめ記事