OpenSSH> = 7.2は、リモートUnixソケット配信用のローカルチルダ拡張をサポートしていますか?

OpenSSH> = 7.2は、リモートUnixソケット配信用のローカルチルダ拡張をサポートしていますか?

gpg-agentUnixソケットをリモートコンピュータに転送しようとしています。リモート転送コマンドの次の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/XXXX:~/XX:~/

RemoteForward構成ファイルのキーワードを使用してそれらを自動化する場合は、変数ssh拡張がないため、絶対パスを使用する必要があることに注意してください。最善の方法は、既知の場所へのシンボリックリンクを作成し、そのパスを設定sshファイルに使用することです。私は複数のプラットフォーム(Ubuntu、Fedora、MacOSなど)で同じ設定ファイルを使用しているので、これが私がしなければならないことです。

関連情報