22 이외의 포트에서 SSH하는 방법


150

같은 라우터 뒤에 두 대의 컴퓨터가 있습니다. A와 B라고합시다

A는 다음과 같은 방식으로 B에 SSH 할 수 있습니다. ssh usr@<internal ip of computer>

B는 동일한 방법으로 A를 SSH로 연결할 수 있지만 외부 IP를 사용해야합니다. 라우터의 포트 22를 컴퓨터 A의 IP로 전달 했으므로 모두 이해할 수 있습니다.

그러나 포트 26을 컴퓨터 B로 전달하고 외부 IP를 사용하여 외부 컴퓨터에서 SSH를 전달하고 포트 22 또는 26을 지정하여 사용할 컴퓨터를 효과적으로 선택하려고합니다.

iptablesA의 OUTPUT 과 B의 INPUT을 통해 포트 26을 허용하려고 시도했지만 작동하지 않는 것 같습니다. A에 대해 22와 마찬가지로 포트 26을 B의 내부 IP (라우터를 통해)로 전달했습니다.

다음은 외부 IP와 포트 26을 사용하여 A에서 B로 SSH를 시도 할 때 얻는 것입니다.

ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.

버전 :

  • A = OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 2012 년 3 월 14 일
  • B = OpenSSH_6.0p1 데비안 -4, OpenSSL 1.0.1c 2012 년 5 월 10 일

A는 12.04 Ubuntu를, B는 Raspbian을 사용하는 Raspberry Pi입니다.

편집 : 나는 SSH 설정 파일 (나는 그것이 발견 전환 해보십시오 않았다 내가 넣어 깜빡 뭔가 /etc/ssh/ssh_config(삭제) 내가 주석 처리 #)으로 라인을 Port변경할 2226. 그것은 여전히 ​​연결 거부 메시지를 주었다. (나는 아무 소용없이 재부팅했습니다.)


yuu가 두 번째 컴퓨터의 포트 22 또는 26에서 SSH를 실행합니까?
Nerdfest

1
참고 등 / SSH / ssh_config를이 / SSH 클라이언트의 설정입니다. 여기서 / etc / ssh / sshd_config 는 ssh 데몬 구성입니다.
steakunderscore 1

답변:


45

두 번째 컴퓨터의 포트 26에서 SSH를 실행하지 않는 것 같습니다. 해당 시스템의 포트 번호를 26으로 변경할 수 있습니다.

편집 중 하나 /etc/ssh/sshd_config및 SSH를 다시 시작하거나 22 일을 남겨 것을 잊지 마세요,하지만 두 번째 컴퓨터의 포트 22에 라우터의 포트 전달 (26). 또한 연결을 허용하기 위해 두 번째 컴퓨터의 방화벽 설정을 변경하는 것을 잊지 마십시오.


아아 ... sshd_config가 아니라 sshd_config가 변경되어야합니까?
Gary

2
옳은. sshd는 서비스입니다 (d는 데몬 용). 구성 파일을 편집하고 (sudo gedit 사용) "sudo service ssh restart"를 사용하여 서비스를 다시 시작하십시오.
Nerdfest

2
문제를 해결했습니다. 방화벽 설정도 변경할 필요가 없었습니다.
Gary

370

Linux 시스템에 있고 포트 26의 SSH 서버에 연결하려는 경우 다음 명령을 사용할 수 있습니다.

ssh user@192.168.1.1 -p 26

노트 :

  1. 서버 IP를 서버의 IP 주소 또는 DNS 이름으로 바꾸십시오.
  2. 설정 한대로 포트 번호를 변경하십시오.
  3. 사용자 정의 포트 SSH를 사용하는 경우 방화벽에서 아웃 바운드, 인바운드 연결에 동일한 포트가 허용됩니다. 그렇지 않으면 연결이 설정되지 않습니다.

17
이것은 올바른 것으로 표시되어야합니다.
ken_oy

1
이것이 정답이라는 데 동의합니다. 이것은 간단하고 요점으로갑니다.
m4l490n

1
@gary 이것은 이것을 올바른 것으로 표시
슬픔시

7
아니요 정답이 아닙니다. OP가 데몬이 원하는 포트에서 수신 대기하지 않는 데 문제가있었습니다. 그는 SSH 서버 및 / 또는 NAT 구성에 대한 도움을 분명히 요청했지만 현재 답변은 원래 게시물을 무시하고 이미 OP에 알려진 클라이언트 명령 옵션을 설명합니다. 이 답변이 어떻게 많은 투표를 받았는지 궁금합니다.
nnovich-OK

2
이것은 대부분의 경우 정확하지만 OP의 문제에는 해당되지 않습니다.
Ultrasonic54321

9

인트라넷 ssh 액세스에만 포트 22를 사용합니다.

인터넷을 통해 액세스하려면 사용자 정의 (비정상) 포트를 사용하십시오. 이것은 "잘 알려진 사용자 이름"에 대해 포트 22를 스캔하는 스크립트 키드에 의해 생성 된로드를 줄인다는 이점이 있습니다.

외부 SSHD 프로세스에 의해 제어된다 xinetd와 병렬로 실행하는 내부 sshd 프로세스. 다음 예에서는 포트 12345를 사용합니다.

시스템에서 사용 가능한 빈 포트 번호로 자유롭게 변경할 수 있습니다. 값이 높을수록이 포트가 "빠른 포트 스캔"에 의해 스캔되지 않을 가능성이 높습니다 .

xinetd구성은 다음과 같습니다

service ssh-external
{
    socket_type = stream
    wait = no
    protocol = tcp
    type = UNLISTED
    user = root
    server = /usr/sbin/sshd
    server_args = -i -f  /etc/ssh/external-sshd.config
    port = 12345
    log_on_failure += USERID
}

파일 /etc/ssh/external-ssdh.config은 일반적인 sshd구성 의 사본 일 수 있습니다 . 다음 명령문이 구성되어 있는지 확인하십시오.

Port 12345
AddressFamily inet

또한 인터넷 액세스를 위해 공개 키 인증을 시행하고 암호 인증을 비활성화하는 것이 좋습니다.

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

7

청취 포트는 IP 주소에 하드 링크 될 수도 있습니다

/ etc / ssh / sshd_config :

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444

이것은 답변이 아닌 의견이어야합니다.
Pablo Pazos

1

관련 답변 에서 설명했듯이 ssh 클라이언트는 URI 형식을로 지정할 수 있습니다 ssh://user@host:1234. 예를 들면 다음과 같습니다.

ssh  ssh://myuser@mydomain.com:2222

여기서 2222는 포트 번호입니다. 대신 사용할 포트 번호를 사용하십시오. 물론, 지정된 포트 ssh 서버에 연결하려면 (연결하려는 호스트의) 먼저 지정된 포트에서 수신 대기해야합니다.


0

기본 포트 (TCP / 22)에서 ssh를 실행하거나 WAN IP 22에서 LAN IP의 ssh-server를 사용하는 포트로 전달하지 않는 것이 좋습니다.

보다 일반적인 의미에서 ssh-server 서비스에 연결하려면 해당 포트에서 수신 대기해야합니다. 당신은해야

  1. 에 편집 /etc/ssh/sshd_config( 메모 D를 에서) #Port 22Port 26. 즉, 포트를 주석 해제하고 변경하십시오. 어쩌면 26보다 나은 것이 42895와 같이 무작위로 위에 있을 것 입니다.
  2. ssh-server 서비스를 다시 시작하십시오.

    sudo systemctl restart sshd.service
    

그런 다음 ssh-client에서 연결할 수 있습니다

ssh user@serverNameOrIP -p 42895

보너스: mosh

mosh 패키지가 서버에 설치되어 있으면

mosh --ssh="ssh -p 42895" serverNameOrIP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.