ssh-agentがセットアップされない(SSH_AUTH_SOCK、SSH_AGENT_PID環境変数が設定されていない)


13

Kubuntu 12.04で友人の新しいユーザーアカウントを設定しました。彼が使用するとき、ssh彼はこのエラーを受け取ります:

認証エージェントへの接続を開けませんでした

sshいくつかのbashスクリプトで実行しています。

そのエラーにつながる可能性のあるさまざまなものを見て回った後、私はこの解決策に出会いました:

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

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

これらの2つのコマンドを実行する前に、env変数は端末に設定されていません。

$ echo $SSH_AGENT_PID

$ echo $SSH_AUTH_SOCK

$ 

コマンドを実行した後、環境変数は期待どおりに設定されます。ただし、それらは設定されたままではありません(たとえば、別のシェルで、または再起動後)。

env変数を設定するためにこれらの2つのコマンドを実行する必要がないように、コンピューターをセットアップする方法を知りたいです。私は自分のコンピューターでそれらを実行する必要はありません(決して)。これまでのところ、私たちのマシンの違いはわかりません。

この情報はマニュアルページにありますが、Ubuntuがエージェントを自動的にセットアップする方法や、友人のマシンで何が起こっているのかがわかりません。

エージェントをセットアップするには、主に2つの方法があります。1つ目は、ssh-agent xterm&など、環境変数がエクスポートされる新しいサブコマンドをエージェントが開始することです。2番目は、エージェントが必要なシェルコマンド(sh(1)またはcsh(1)のいずれかの構文を生成可能)を出力することです。これはssh-agent -s、sh(1)などのBourneタイプのシェルのeval ssh-agent -ccsh(1)および派生物のためのksh(1)およびeval 。

インストール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

manページから:

F-フォークの後で実行されたコマンドの後に実行されないコマンド

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


2
Ubuntuでは、ssh-agent通常はから開始され/etc/X11/Xsession.d/90x11-common_ssh-agentます。これはuse-ssh-agentから削除することで抑制できます/etc/X11/Xsession。それらのファイルは正しいですか?エージェントは開始されてから殺されますか、それとも開始されませんか?(ログイン後、インストールacctして実行しlastcomm、どのプログラムが起動されたかを確認します。)
ジル「SO-悪であるのをやめる」

@ Gilles-ありがとうございます。これらの2つのファイルは、私のマシンと彼のマシンで同一です。私たちは両方を持っX11/Xsession.options:use-ssh-agentていX11/Xsession.d/90x11-common_ssh-agent:SSHAGENT=/usr/bin/ssh-agentます。私がしようとしますacctlastcomm、次。ありがとう
MountainX-for-Monica

更新された質問
MountainX-for-Monica

まだ解決策を探しています...
MountainX-for-Monica

プロセスlastcommだけでなく、フルセッションのの出力を投稿してくださいssh-agent。ポイントは、さまざまなプログラムが開始される順序を確認することです。
ジル 'SO-悪であるのをやめる'

回答:


0

ユーザーはsshローカルでログインするのではなく、ログインしていると述べました。そのためuse-ssh-agent、これ/etc/X11/Xsession.optionsは赤いニシンです。X11GUIデスクトップにローカルでログインする(またはVNCやRDPなどの仮想X11セッションを使用する)場合にのみ、SSHセッションでは実行されません。

代わりに、libpam-sshどちらのシステムにインストールされているかを確認する必要があります。SSHプライベートキーパスフレーズを使用してユーザーを認証するように構成できますが、これはオプションであり~/.ssh/login-keys.d/、その機能のためにキーを特別に配置する必要があります。

ただし、他の機能は、ログインセッションでSSHエージェントを自動起動し、パスフレーズがユーザーのログインパスワードと同じ場合、SSH秘密鍵をエージェントに自動的に追加することです。これがシステム間の異なる動作の原因かもしれないと考えています。


3

のために

$ eval `ssh-agent -s`

「起動スクリプト」に置かれたときに機能するコンストラクト、セッション、および最終的に環境が期待される端末は、そのスクリプトの子孫(forkおよびexec)でなければなりません。理由は、の出力がssh-agent -s評価されると、環境変数を設定するためですれると、シェル呼び出しでをeval。そこに形成され、彼らは伝承され、途中で失われることもあります。

したがって、ssh-agentログイン中にスクリプトAによって実行され、シェルスクリプトを開始する端末B がAの子孫ではない場合、Bの環境は表示されません。

あなたがしていることが起こる場合ssh-agentとしてスタートしsystemd --userたサービス、そしてあなたの代わりに規則を使用する必要があります。Doはさせない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}は後者に対応することに注意してください。

注:これには満足していません!


1

私はここで答えを見つけました:

http://www.bernatchez.net/userauth.html

Ubuntuでは、ssh-addユーティリティは証明書ファイルのロードに失敗します。エージェントがgnome-keyringによって実装されている場合に発生します。修正は、gnome-keyringのsshコンポーネントの使用を停止することです。初期化プロセスは実際に真のssh-agentを起動してからAUTH_SOCKETを上書きするgnome-keyring-ssh.desktopを起動して引き継ぐため、gnome-keyring-ssh.desktopを無効にすることで元のssh-agentに戻すことができます。

gnome-keyring-ssh.desktopを無効にします。

cd /etc/xdg/autostart/
sudo emacs gnome-keyring-ssh.desktop

デスクトップファイルに次の行を追加して保存し、再起動します。

X-GNOME-Autostart-enabled=false

0

あなたはそれを言った

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

必要に応じて動作します。したがって、必要なのは、適切なタイミングで.bash_profileまたは.xsessionで実行することだけです。デバッグステートメントを追加(date; env|sort) >> /tmp/logして、実行時を正確に理解できるようにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.