「ssh user@ip」と「ssh ip user」の違いは何ですか?

「ssh user@ip」と「ssh ip user」の違いは何ですか?

上記の問題の1つに直面しています。

それはssh user@ipうまくいくかもしれませんが、その逆はできません。実行すると、次のエラーが発生します。ssh ip root

sh: root: not found

そのため、問題のある構文を使用するアプリの1つがログインできないようです。

答え1

これはssh user@ip正しい構文です。もう1つはユーザーとしてホストにログインし、名前付きipコマンドを実行しようとしますroot

質問を更新し、実際に達成したいことを説明してください。

答え2

他の人が言ったように、ssh user@ipこれは正しい構文です。使用される場合、ssh ip user「ユーザー」部分は実際にリモートホストで実行されるコマンドです。

正しい構文でその部分を抑制すると、user@実際にローカルユーザーがリモートホストに渡されます。同じ名前のユーザーがいない場合、またはリモートホストで無効になっているユーザーの場合は、エラーメッセージが表示されます。

このエラーメッセージ()が言うことは、sh: root: not foundリモートホストにrootコマンドがないことです。

SSHについて

ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] 
  [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] 
  [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport]
  [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] 
  [-Q cipher | cipher-auth | mac | kex | key | protocol-version] 
  [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port] 
  [-w local_tun[:remote_tun]] [user@]hostname [command]

関連情報

答え3

sshby マニュアルページを見ると、関連するman ssh構文を見つけることができます。

ssh [...] [-l login_name] [...] [user@]hostname [command]

したがって、コマンドを解析するときに、フラグのない最初のパラメータをホスト名として処理し、その後のパラメータをリモート実行に渡されるコマンドとして処理します。

あなたの出来事に戻ります。ホスト名の後に名前を入れると、コマンドとして扱われます。これがこのエラーメッセージが表示される理由です。rootリモートホストでコマンドが見つからないためです。

関連情報