Knowhow/Linux

ubuntu 간 ssh 원격 연결하기

침닦는수건 2024. 2. 14. 20:12
반응형

원격 업무 ubuntu PC로 본다면 사실 상 ssh는 필수다. 터미널만 있으면 작업이 가능한데다, vscode가 remote docker container에도 붙을 수 있기 때문에 GUI 작업도 ssh로 붙을 수만 있으면 ubuntu 원격은 쉽다.

 

그런데 매번 설정할 때마다 간단한 듯 하면서도 자잘한 오류나 삽질을 많이 해서 한 번 정리해두고자 한다.

 

Server, Client 공통으로 할 일

ssh가 기본이니 ssh는 설치가 당연히 되어있어야 한다.

sudo apt update
sudo apt install ssh
sudo service ssh start

service ssh status

 

아래와 같이 active (running) 상태로 보이면 정상적으로 설치되고 동작하고 있는 것이다.

 

Issue

간혹 ssh 설치를 시도했을 때 다음과 같은 오류가 발생한다. (원인은 모르겠음...)

jseob@jseob:/var/lib/dpkg$ sudo apt-get install ssh
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  ncurses-term openssh-server openssh-sftp-server ssh-import-id
Suggested packages:
  molly-guard monkeysphere ssh-askpass
E: Could not get lock /var/cache/apt/archives/lock. It is held by process 10325 (unattended-upgr)
N: Be aware that removing the lock file is not a solution and may break your system.
E: Unable to lock directory /var/cache/apt/archives/

 

뭔가 lock 어쩌구 저쩌구 오류가 나는데 해결 방법은 다음과 같다.

sudo killall apt apt-get //모든 프레세스 kill

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock*

sudo dpkg --configure -a
sudo apt update

 

오류 notion에서 lock 파일 함부로 지우지 말라고 알려주고 있지만, 검색해보면 다른 해결법이 안나온다. lock 파일이 존재하는 3가지 경로에 가서 파일을 지워준 뒤, dpkg reconfigure를 수행해주면 해결된다. 

 

위 명령어를 따라했음에도 오류가 반복되고, 심지어 dpkg error가 다시 꼬리를 물 수 있는데 그럴 경우, 위 커맨드가 지우려고 하는 파일들이 실제로 잘 지워졌는지 확인해봐야 한다.

 

아래 그림처럼 남아있을 때가 있더라.

 

 

 

 

 

 


Server에서 할 일 (원격 연결 "될" PC)

 

Server 역할을 할 PC에서는 openssh-server를 추가로 설치해주어야 한다.

sudo apt update
sudo apt install openssh-server

 

추가로 보통 방화벽 때문에 포트가 막혀있으므로, 연결에 사용할 포트를 열어두어야 한다. 

sudo ufw allow ssh
sudo ufw allow PORT // 대부분 22
sudo ufw reload

 

마지막으로는 당연하게도 IP 와 계정 이름을 확인해야 한다. 계정 같은 경우는 PC 로그인할 때 쓰는 그 이름 맞다. 

hostname -I

 

여러개가 뜰 수도 있는데 웬만하면 첫번째로 뜨는 것 쓰면 된다. 192로 시작하지 않는 것.

 

Issue

대부분 ssh 연결을 할 때 포트 22번을 사용하지만 다를 수 있다. 본인이 포트를 다르게 설정해두었던가, 아니면 PC를 물려받아서 사용하던가. 혹은 포트를 바꾸고 싶을 수도 있다. 따라서 어떤 포트를 사용할 것인지 확인해두어야 한다.

 

첫번째 방법은 sshd_config 파일을 열어 확인하는 방법이다. 

sudo nano /etc/ssh/sshd_config

 

위와 같이 입력해보면 "PORT xxx"와 같이 적혀있는 라인이 있는데 해당 xxx가 포트 번호다. (추가하고 싶으면 여기에 적으면 됨.)

 

두번째 방법은 다음와 같다.

sudo netstat -tlnp | grep ssh

//tcp        0      0 0.0.0.0:XXXX            0.0.0.0:*               LISTEN      1238/sshd: /usr/sbi 
//tcp6       0      0 :::XXXX                 :::*                    LISTEN      1238/sshd: /usr/sbi

 

위와 같이 출력되는데 : 뒤에 붙은 숫자가 포트가 된다.


Client에서 할 일 (원격 연결 "할" PC)

연결하는 것이 전부다. 앞서 host PC의 IP와 포트를 확인해두었으므로 연결하면 된다. 

ssh USER_ID@IP -p PORT

 

경고는 무시하고 y 누르고 계정 로그인하면 원격 연결된다.

반응형