외부에서 SSH를 통해 Ubuntu 서버에 연결


25

최근에 Ubuntu Server 12.04 (Precise Pangolin)를 설치했으며 주로 파일 서버로 사용하려고합니다. 저는 Linux를 완전히 처음 사용하기 때문에 꽤 큰 학습 곡선입니다. 어제 SSH 키 쌍을 사용하여 Windows 7 시스템에서 PuTTY 를 구성 하여 데스크탑에서 Ubuntu 서버를 관리 할 수있었습니다. 두 컴퓨터가 모두 같은 네트워크에 있다면 제대로 작동합니다.

내 노트북 ​​( MacBook Air )의 경우 항상 같은 네트워크에 있지는 않습니다. 다른 네트워크에있을 때 SSH를 통해 랩톱에서 Ubuntu 서버에 연결할 수 있습니까?

서버의 호스트 이름이 LAN에서 브로드 캐스트되도록 avahi 데몬을 설치하고 항상 동일한 IP 주소를 서버에 할당하도록 라우터를 구성했습니다. 그 외에도 서버에 설치 한 유일한 것은 OpenSSH 이며 암호 인증을 비활성화하여 키 쌍을 사용하여 연결할 수만 있습니다.

내 노트북의 터미널에서 다음과 같은 작업을 수행 할 수 있다고 생각했습니다.

ssh my.external.ip.address user@hostname.local

해당 명령을 시도하면 오류가 발생합니다.

SSH : 호스트 my.external.ip.address 포트 22에 연결 : 작업 시간 초과

나는 또한 시도했다

ssh my.external.ip.address user@servers.local.ip.address

이전과 같은 오류 메시지가 나타납니다. 그래서 그것은 당신에게 내가하려는 일에 대한 아이디어를 줄 것이지만, 이것이 가능합니까? 그렇다면 어떻게해야합니까?

랩톱에서 ssh를 통해 외부 연결을 설정할 수 있다고 가정하면 ISP가 외부 IP 주소를 변경하여 외부 연결을 끊을 가능성이 있습니다. ISP가 외부 IP 주소를 변경하면 새로운 외부 IP 주소가 무엇인지 알지 않고도 서버에 원격으로 연결할 수 있습니다.

답변:


23

우선 올바른 명령은 다음과 같습니다. ssh user@my.external.ip.address

그리고 라우터는 SSH 포트 22를 서버의 로컬 IP 주소로 전달하도록 구성되어야합니다.

추가 디버깅 :

1) 서버와 라우터에서 포트 22 (SSH)가 열려 있는지 확인하십시오 (포트 전달).

2) SSH 서버가 서버에서 실행 중인지 확인

3) 사용 ping, ssh -v연결 및 모양에있는 동안 /var/log/auth.log더 연결 문제를 디버깅 할 수 있습니다.

1) 라우터에서 : 라우터 별 지침을 따릅니다.

서버에서 : sudo ufw status(다른 방화벽 구성 유틸리티를 사용하지 않는 한) 또는 sudo iptables -L(일반적인 방법이지만 복잡한 출력)

포트 22를 열려면 sudo ufw allow 22

cf https://help.ubuntu.com/12.04/serverguide/firewall.html

2) 설치되어 있는지 확인하십시오. dpkg -l openssh-server

실행 중인지 확인하십시오. service ssh status또는ps aux | grep sshd

3) 연결 클라이언트에서 :

  • ping my.external.ip.address
  • ssh -v user@my.external.ip.address

서버에서 :

  • sudo less /var/log/auth.log

필요한 경우 라우터 로그도 확인할 수 있습니다.

온라인 포트 스캐너는 다음과 같습니다. https://www.grc.com/x/ne.dll?bh0bkyd2

나는 당신이 같은 도구를 사용할 수 있다고 생각합니다 nmap 또는 기타 하지만 아직 익숙하지는 않습니다.

변화하는 외부 IP 주소 다루기 :

1) dynDNS 또는 유사한 계정을 만드십시오 : http://dyn.com/dns/

동적 DNS 제공 업체 목록 :

2) 또 다른 해결책은 crontab 작업을 설정하는 것입니다. crontab 작업은 정기적으로 외부 IP 주소를 우편으로 보내거나 dropbox와 같은 온라인 스토리지 서비스에 넣습니다.

내 친구가 사용하는 스크립트는 다음과 같습니다.

    #!/bin/bash
    # Bash script to get the external IP address
    MYWANIP=$(curl http://mire.ipadsl.net | sed -nr -e 's|^.*<span class="ip">([0-9.]+)</span>.*$|\1| p')
    echo "My IP address is: $MYWANIP"

    IPold=$(cat /home/USER/Dropbox/test.txt)
    echo "Previous IP Address: $IPold"

    if [[ $IPold != $MYWANIP ]] ;
    then
      echo "New IP"
      rm /home/USER/Dropbox/test.txt
      echo $MYWANIP >> /home/USER/Dropbox/test.txt;
      echo $MYWANIP;
    else
      echo "Same IP";
    fi

    # example crontab entry:
    ## m h  dom mon dow   command
    ## */10 * * * * /home/USER/Dropbox/test_ip.sh

라우터 포트 포워딩 :

1) 먼저 다음을 실행하여 라우터의 로컬 IP 주소를 확인하십시오.

ip route | grep default

일반적으로 192.168.xx와 같습니다.

대체 방법 및 기타 OS 솔루션 :

2) 라우터에 로컬로 연결된 컴퓨터를 사용하여 이전에 찾은 IP에 액세스합니다 (예 : http://192.168.1.1). . 라우터 구성 인터페이스가 나타납니다.

3) 다음 단계는 라우터에 따라 다릅니다. OpenWRT를 사용하여 라우터에서 수행되는 방법은 다음과 같습니다.

https://newspaint.wordpress.com/2012/08/26/how-to-add-a-port-forward-using-the-web-interface-on-openwrt-10-03-1/


이것에 감사합니다, 나는 지금 제안을 통해 실행할 것입니다.
Aesir

좋아, 라우터의 포트 22를 서버로 전달하는 것만으로도 많은 일을 할 수 있습니다. 외부 IP 주소가 변경 될 수 있다는 사실과 관련하여 질문의 두 번째 부분을 해결할 수있는 방법이 있습니까? -방금 편집 한 내용을 보았습니다. 이제 읽습니다.
Aesir

라우터의 포트 22를 서버로 전달하는 방법을 설명해 주시겠습니까? 그게 무슨 뜻이야? 고맙습니다!
xxx222

사용하는 라우터에 따라 다르지만 일반적으로 포트 전달 또는 방화벽 설정 페이지가 있어야합니다. OpenWRT를 사용하여 라우터에서 수행하는 방법은 다음과 같습니다. newspaint.wordpress.com/2012/08/26/… 대부분의 라우터는 브라우저에서 192.168.1.1 또는 이와 유사한 192.168.xx 주소로 이동하여 구성 할 수 있습니다. 라우터와 동일한 네트워크.
KIAaze

3

기본적으로 Ubuntu (데스크톱) SSH는 설치되어 있지 않습니다.

터미널에서 다음 명령으로 설치할 수 있습니다.

sudo apt-get install openssh-server

서비스를 즉시 설치하고 시작해야합니다.


2
+1. 이것은 내가 시도했을 때 훌륭하게 작동했습니다. 해당 명령을 실행 한 직후 ( Ubuntu 14.04 (Trusty Tahr) 64 비트 데스크톱 버전) Ubuntu 시스템으로 ssh 할 수있었습니다 .
Peter Mortensen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.