"ssh user@ip"와 "ssh ip user"의 차이점은 무엇입니까?

"ssh user@ip"와 "ssh ip user"의 차이점은 무엇입니까?

위의 문제 중 하나에 직면하고 있습니다.

그것은 ssh user@ip작동할 수 있지만 그 반대의 경우는 불가능합니다. 실행하면 다음 오류가 발생합니다.ssh ip root

sh: root: not found

그래서 문제가 있는 구문을 사용하는 앱 중 하나가 로그인할 수 없는 것 같습니다.

답변1

이는 ssh user@ip올바른 구문입니다. 다른 하나는 사용자로 호스트에 로그인하고 ip이름이 지정된 명령을 실행하려고 시도합니다 root.

질문을 업데이트하고 실제로 달성하려는 것이 무엇인지 설명하십시오.

답변2

다른 사람들이 말했듯 ssh user@ip이 이것은 올바른 구문입니다. 사용되는 경우 ssh ip user"사용자" 부분은 실제로 원격 호스트에서 실행되는 명령입니다.

올바른 구문으로 해당 부분을 억제하면 user@실제로 로컬 사용자가 원격 호스트로 전달됩니다. 동일한 이름을 가진 사용자가 없거나 원격 호스트에서 비활성화된 사용자인 경우 오류 메시지가 표시됩니다.

이 오류 메시지( )가 말하려는 것은 sh: root: not found원격 호스트에 루트 명령이 없다는 것입니다.

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원격 호스트에서 명령을 찾을 수 없기 때문입니다 .

관련 정보