web-dev-qa-db-ja.com

NASにSSH接続して、そこで実行されているDockerインスタンスに接続したいのですが、どうすればよいですか?

セットアップ:Windows 10 WSL

NASでシェルを開き、Dockerインスタンスに接続するためのコマンドの実行

ssh [email protected] -i ./qnap_001.pem
[~] # docker exec -it ubuntu /bin/bash
root@ubuntu:/#

今度はsshでdockerインスタンスに接続したいのですが、これは機能しません。

ssh [email protected] -i ./qnap_001.pem "docker exec -it ubuntu /bin/bash"

戻り値

sh: docker: command not found

私は投稿を読むのに数時間を費やしましたが、それを解読することはできません。解決したら、 ConEm のホットキーを使用してセットアップし、Dockerインスタンスでシェルを開きます。

1
chris loughnane

リモートセッションにTTYを割り当てるには、おそらく-tを指定してsshを実行する必要があります。

ssh -t [email protected] -i ./qnap_001.pem "docker exec..."
    ^^

差し迫った問題は、Dockerを含むディレクトリがリモートシステムのPATHにないことです。これは、そのディレクトリをPATHに追加するものが実行されなかったためです。

Invoke sshを実行し、リモートシステムで実行するコマンドを指定すると、sshはデフォルトでリモートセッションにTTYを割り当てません。リモートシェルにはTTYがないため、リモートシェルの初期化が異なる場合があります。特に、DockerディレクトリをPATHに追加するステートメントは実行されなかった可能性があります。

Ssh -tオプションは、セッションにTTYを割り当てるようにsshに指示します。これにより、インタラクティブセッションの場合と同じようにシェルが初期化されます。

1
Kenster