Centos 6에서 포트 전달에 문제가 있습니다.
ssh -v -R root@hostname:19999:localhost:22 root@hotname
다음과 같은 경고가 표시됩니다.
Warning: remote port forwarding failed for listen port 19999
SSH 세션이 시작되지만 이를 터널로 사용할 수 없습니다. 전체 출력은 다음과 같습니다.
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to hostname [ip.ip.ip.ip] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/identity type -1
debug1: identity file /root/.ssh/identity-cert type -1
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: identity file /root/.ssh/id_dsa type -1
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
debug1: match: OpenSSH_5.3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr 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 'hostname' is known and matches the RSA host key.
debug1: Found key in /root/.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,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_0' not found
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_0' not found
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
Credentials cache file '/tmp/krb5cc_0' not found
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Next authentication method: password
hostname's password:
debug1: Authentication succeeded (password).
debug1: Remote connections from root@hostname:19999 forwarded to local address localhost:22
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: remote forward failure for: listen 19999, connect localhost:22
Warning: remote port forwarding failed for listen port 19999
debug1: All remote forwarding requests processed
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Last login: Sun Jul 21 17:24:54 2013 from 172.16.63.56
연결하는 동안 /var/log/secure에 메시지가 표시됩니다.
Jul 21 18:30:09 localhost sshd[11816]: Accepted password for root from 172.16.63.56 port 52035 ssh2
Jul 21 18:30:09 localhost sshd[11816]: pam_unix(sshd:session): session opened for user root by (uid=0)
Jul 21 18:30:09 localhost sshd[11816]: error: channel_setup_fwd_listener: getaddrinfo(root@hostname): Name or service not known
우분투를 사용하는 다른 PC에서 동일한 명령을 수행할 수 있으며 완벽하게 작동하며 포트 19999가 무료라고 확신합니다. 어떡해?
답변1
인수의 "root@" 부분을 생략해 보세요 -R
.
ssh -v -R hostname:19999:localhost:22 root@hostname
4개 매개변수 버전의 경우 -R
4개 매개변수는 원격 호스트에서 연결을 수신하는 주소와 포트, 그리고 로컬 호스트에서 전달할 주소와 포트입니다.
원격 바인딩 호스트/주소로 "root@hostname" 값을 제공합니다. 이 값은 호스트 이름이나 IP 주소여야 합니다. ssh
이 값에는 사용자 이름이 포함될 것으로 예상하지 않습니다. ssh
아마도 전체 문자열 "root@hostname"을 호스트 이름으로 찾으려고 시도했지만 실패했을 것입니다.
답변2
나는 RHEL7에서 이와 동일한 문제로 어려움을 겪고 있었지만 연결하려는 사용자가 "user_u"로 제한된 SElinux라는 점으로 인해 더욱 복잡해졌습니다. audit.log는 다음을 기록했습니다.
23. 12/09/2015 12:24:40 sshd user_u:user_r:user_t:s0 49 tcp_socket name_bind system_u:object_r:unreserved_port_t:s0 denied 8595602
24. 12/09/2015 12:24:40 sshd user_u:user_r:user_t:s0 49 tcp_socket name_bind system_u:object_r:unreserved_port_t:s0 denied 8595603
하지만 내가 그곳을 살펴봐야 한다는 사실을 깨닫는 데는 항상 시간이 걸립니다. :-)
이 문제를 해결하려면 ephemeral_port_t 범위의 포트를 사용해야 했습니다.
SELinux Port Type Proto Port Number
ephemeral_port_t tcp 32768-61000
ephemeral_port_t udp 32768-61000