gpg-agent
Unixソケットをリモートコンピュータに転送しようとしています。リモート転送コマンドの次の2つのバージョンを試しました。
- ㅏ:
ssh -vvv -N -R ~/.gnupg/S.gpg-agent:~/.gnupg/S.gpg-agent.extra {HOST}
- 第二:
ssh -vvv -N -R ~/.gnupg/S.gpg-agent:/home/{USER}/.gnupg/S.gpg-agent.extra {HOST}
最初の接続の後、すべてはリモート転送の成功を報告しますssh
。しかし、debug1: connect_next: host ~/.gnupg/S.gpg-agent.extra ([unix]:~/.gnupg/S.gpg-agent.extra): No such file or directory
、リモートシステムで実際のデータ接続を試みると、オプションAのソケットは失敗しますが、gpg-connect-agent /bye
オプションBのソケットは正常に機能します。
ssh
リモートでコマンドを渡すことでローカルホームディレクトリを拡張できるかどうか疑問に思います。そうでなければなぜですか?
答え1
~
いくつかの手順で拡張する必要があります。通常、このプログラムはシェルです。 sshdデーモンはシェルへのパスを提供せず、パスを拡張しません。
ただし、現在のユーザーのホームディレクトリはとにかく作業ディレクトリなので、拡張する必要はありません。
努力する
ssh -vvv -N -R ~/.gnupg/S.gpg-agent:${HOME}/.gnupg/S.gpg-agent.extra {HOST}
編集する:
これは、クライアントではなくホストの作業ディレクトリが常にターゲットユーザーのホームディレクトリであるために機能します。
SSHサーバーは~
環境変数を拡張しませんが、ホスト上でコードを実行して、SSHサーバーが使用できる既知の場所へのリンクまたはシンボリックリンクを生成できる必要があります。
編集済みクサラナンダが提案したとおり
答え2
コメントは改行文字をサポートしていないので、ここに入れなければなりませんでした。
ssh -vvv -N -R ~/.gnupg/S.gpg-agent:${HOME}/.gnupg/S.gpg-agent.extra {HOST}
働くssh -vvv -N -R ${HOME}/.gnupg/S.gpg-agent:${HOME}/.gnupg/S.gpg-agent.extra {HOST}
働くssh -vvv -N -R ~/.gnupg/S.gpg-agent:~/.gnupg/S.gpg-agent.extra {HOST}
するいいえ働くssh -vvv -N -R ${HOME}/.gnupg/S.gpg-agent:~/.gnupg/S.gpg-agent.extra {HOST}
するいいえ働く
@RalfFriedlが彼のコメント(ここにそのままコピーされています)で説明したように、「Theはクライアント${HOME}
シェルに置き換えられます。これは$HOME
クライアントとサーバー$HOME
で同じ場合にのみ機能します~/
。~/XX
ただ「です。$HOME/XX
XX:~/
XX:~/
RemoteForward
構成ファイルのキーワードを使用してそれらを自動化する場合は、変数ssh
拡張がないため、絶対パスを使用する必要があることに注意してください。最善の方法は、既知の場所へのシンボリックリンクを作成し、そのパスを設定ssh
ファイルに使用することです。私は複数のプラットフォーム(Ubuntu、Fedora、MacOSなど)で同じ設定ファイルを使用しているので、これが私がしなければならないことです。