「echoコマンド | sshサーバー」と「sshサーバーコマンド」を混同する

「echoコマンド | sshサーバー」と「sshサーバーコマンド」を混同する

非対話型ログインシェルを学習する過程で、SSHを介してリモートでコマンドを実行する2つの方法が見つかりました。私にとっては、それらはすべて同じように見えます。しかし、残念ながらそうではありません。

コマンドを使用すると、echo "shopt login_shell; echo \$-" | ssh -l poweruser 192.168.1.67次のような結果が出力されます。

Pseudo-terminal will not be allocated because stdin is not a terminal.
[email protected]'s password:
login_shell     on 
hBs

ただし、コマンドを使用すると、ssh -l poweruser 192.168.1.67 "shopt login_shell; echo \$-"他の結果が表示されます。

[email protected]'s password:
login_shell     off
hBc

2番目のケースでは、パスワードの入力を求められますが、シェルがログインシェルではない理由を教えてください。

ベストアンサー1

man ssh文書によると:

もし注文する指定すると、ログインシェルではなくリモートホストで実行されます。

その理由は、ある場合にはコマンドを指定し、他の場合には指定せず、意図的にssh(設計に応じて)これらのケースでは異なる動作をするからです。

コマンドを指定しないと、パイプ入力を読み取り実行するログインシェルが起動します。コマンドを提供したところで始まりました。

パスワードを求めるメッセージは関係ありません。これは、シェルまたはコマンドを実行する前にサーバーにユーザーの身元を認証するためのものです。

おすすめ記事