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`
「開始スクリプト」を置くときにセッションと最終的に環境があると予想される端末は、そのスクリプトの子でなければなりません(およびfork
)exec
。その理由は、評価時に出力に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}
後者に該当することに注意してください。
メモ:私はこれについて満足していません!