私はCentOS 7.5システムを使用しており、リモートサーバーのSSH用に公開鍵認証を設定しました。通常、最初のサーバーとしてsshを実行すると、鍵のロックを解除するためにパスワードを要求するGNOMEグラフィックプロンプトが表示されるため、GNOMEセッション中に再度要求されません。
しかし、時には端末から直接パスワードを求めるメッセージが表示されます。
Enter passphrase for key '/home/dr01/.ssh/id_rsa':
サーバーに接続するたびにパスワードを入力する必要があるので面倒です。したがって、この場合はコンピュータを再起動するだけです。
GNOMEキーリングデーモンは/usr/bin/gnome-keyring-daemon --start --components=pkcs11
。
再起動しても効果はありません。
[dr01@centos7 ~]$ /usr/bin/gnome-keyring-daemon -r
** Message: Replacing daemon, using directory: /run/user/1001/keyring
GNOME_KEYRING_CONTROL=/run/user/1001/keyring
SSH_AUTH_SOCK=/run/user/1001/keyring/ssh
その後も、コマンドラインで秘密鍵のパスワードの入力を求められます。
私もまた始めました。
/usr/bin/gnome-keyring-daemon -r --unlock
しかし、それは中断されます。これを印刷してくださいstrace
:
(...)
read(3, "\335{\232\316.\353\335\22\16\277\321\f\326A\334\272\2\342\227\246V`\262\265\300\213@\273>%\303\2"..., 120) = 120
getrusage(RUSAGE_SELF, {ru_utime={0, 2440}, ru_stime={0, 7321}, ...}) = 0
times({tms_utime=0, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 429541253
futex(0x7f0889a5e548, FUTEX_WAKE_PRIVATE, 2147483647) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f088aa6a000
mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f088aa66000
mlock(0x7f088aa66000, 16384) = 0
read(0,
その後は凍結しますread(0,
。
この問題をどのように解決できますか?
答え1
端末にパスワードプロンプトが表示された場合は、SSH_AUTH_SOCK
環境変数がssh
そのコンテキストのコマンドに渡されていないことを意味できます。
GNOME Keyring DaemonをSSHエージェント(または実際にはすべてのSSHエージェント)として使用する場合、このSSH_AUTH_SOCK
変数はSSHエージェント(あなたの場合はGNOME Keyring Daemon)によって生成されたUNIXソケットを指す必要があります。あるいはsshd
、SSH接続を介して作業している場合は、プロキシ接続転送が有効になります。
つまり、ユーザーエクスペリエンスがリセットされている可能性があります。すでに使用しており、保存がsudo
許可されているSSH_AUTH_SOCK
環境変数のリストにない可能性があります。sudo
それとも別のプログラムのシェルエスケープ機能を実行していますが、そのプログラムがSSH_AUTH_SOCK
実行されているシェルに変数を渡しませんか?