非対話型ログインシェルを学習する過程で、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
もし注文する指定すると、ログインシェルではなくリモートホストで実行されます。
その理由は、ある場合にはコマンドを指定し、他の場合には指定せず、意図的にssh
(設計に応じて)これらのケースでは異なる動作をするからです。
コマンドを指定しないと、パイプ入力を読み取り実行するログインシェルが起動します。コマンドを提供したところで始まりました。
パスワードを求めるメッセージは関係ありません。これは、シェルまたはコマンドを実行する前にサーバーにユーザーの身元を認証するためのものです。