외부에서 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.