ssh root@localhost 오류가 발생했습니다.

ssh root@localhost 오류가 발생했습니다.

보안 수준을 얻으려면 Linux 가상 머신에서 루트 셸을 가져와야 합니다. 시스템에 사용자 계정이 있고 모든 파일(예: /etc...)에 쓸 수 있는 방법이 있으며 다음을 통해 내 권한을 에스컬레이션하고 싶습니다.

ssh root@localhost

ssh-keygen을 사용하여 rsa 키를 만들고 이를 /root/.ssh/authorized_keys에 추가하고 루트 연결을 허용하도록 /etc/ssh/sshd_config를 수정했습니다. 그러나 루트로 상자에 연결할 수 없습니다. 출력은 다음과 같습니다.

Last login: Fri Jan 27 00:43:01 2012 from localhost
Connection to localhost closed.

인증에 성공했지만 연결이 즉시 종료되는 것 같습니다. 왜 이것이 작동하지 않는지 모르겠습니다.

자세한 출력은 다음과 같습니다.

OpenSSH_4.6p1 Debian-7, OpenSSL 0.9.8g 19 Oct 2007
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/user/.ssh/identity type -1
debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.6p1 Debian-7
debug1: match: OpenSSH_4.6p1 Debian-7 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.6p1 Debian-7
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,hostbased
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending command: /bin/bash
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: Transferred: stdin 0, stdout 0, stderr 0 bytes in 0.0 seconds
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.0
debug1: Exit status 255

답변1

SSH 로그인은 주로 세 단계로 나뉩니다.

  1. SSH는 요청된 사용자가 비밀번호나 개인 키 또는 다른 방법을 가지고 있는지 확인하여 사용자를 인증합니다.
  2. SSH는 PAM을 통과할 수 있는 세션을 시작합니다(따라서 PAM 구성에 따라 실패할 수 있음).
  3. SSH가 쉘을 시작합니다.

추적의 이 부분에서 ssh -v:

debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending command: /bin/bash

SSH 수준 인증이 성공하고 ssh 데몬이 셸( /bin/bash)을 시작하는 것을 볼 수 있습니다. 따라서 /bin/bash그 안에 있는 어떤 것 또는 그 구성이 로그인을 방해하고 있는 것입니다. Bash 초기화 파일 ~root/.bash_login~root/.bash_profile여기 /etc/profile에 포함될 수 있는 기타 파일을 확인하세요. 비대화형 로그인을 시도합니다: ssh root@localhost ls; 이것은 여전히 ​​bash를 전달하지만 동일한 init 파일은 전달하지 않습니다(bash는 ~/.bashrc부모가 또는 일 때 비대화형 로그인을 읽는다는 점에서 이상합니다).rshdsshd

init 파일에 손상된 부분이 있는 경우 적절한 시간에 Ctrl+를 눌러 중단 할 수 있습니다 C(SSH 세션을 설정한 후 SSH가 원격 호스트에 Ctrl+를 보내고 C연결을 닫지 않고 문제가 발생하기 전). 초기화 파일 지침). 실제로는 몇 번의 시도만으로 정확한 시간을 수동으로 얻을 수 있으며, 이는 시스템을 로드하는 데 도움이 될 수 있습니다. 수동으로 할 수 없다면 작은 expect프로그램이 도움이 될 것입니다.

답변2

Gilles 가 언급한 것 외에도 루트의 쉘 을 /etc/passwd./bin/bash/bin/falseid root

답변3

내 추측으로는 의 기본 경로가 /etc/passwd존재하지 않거나 잘못된 소유권/권한이 있는 것 같습니다.

관련 정보