사용자 도구

사이트 도구


ssh

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
ssh [2021/09/03 05:56] – [password 없이 로그인] rex8312ssh [2025/06/29 16:45] (현재) – [ssh: port forward] rex8312
줄 33: 줄 33:
 (클라이언트에서 서버에) 키 복사 (클라이언트에서 서버에) 키 복사
  
 +  # (1)
   ssh-copy-id -i ${HOME}/.ssh/id_rsa.pub {server-id}@{server-ip}   ssh-copy-id -i ${HOME}/.ssh/id_rsa.pub {server-id}@{server-ip}
      
 +  # (2)
   # 클라이언트의 id_rsa.pub 파일내용을 서버의 .ssh/authorized_keys 에 추가하면 되기 때문에,   # 클라이언트의 id_rsa.pub 파일내용을 서버의 .ssh/authorized_keys 에 추가하면 되기 때문에,
   # 클라이언트의 id_rsa.pub 파일을 서버에 복사하고 authorized_keys에 수동으로 추가해도 됨   # 클라이언트의 id_rsa.pub 파일을 서버에 복사하고 authorized_keys에 수동으로 추가해도 됨
줄 41: 줄 43:
   cat id_rsa.pub >> .ssh/authorized_keys   cat id_rsa.pub >> .ssh/authorized_keys
   rm id_rsa.pub   rm id_rsa.pub
 +  
 +  # (3)
 +  # pem file 복사
 +  cat ~/.ssh/id_rsa.pub | ssh -i "pair.pem" root@10.0.0.1 "cat - >> ~/.ssh/authorized_keys"
      
 (클라이언트에서) 접속 (클라이언트에서) 접속
줄 64: 줄 70:
 restart-service sshd restart-service sshd
 </code> </code>
-===== Port Fowarding을 이용해서 외부에서 접속 ====== 
  
-{{tag>ssh}} 
- 
-외부에서 접속하고자 하는 서버에서 실행 
- 
-  ssh -R 2222:localhost:22 {server-id}@{server-ip} 
-   
-  # {server-ip} 는 외부에서 접속이 가능한 서버 
-   
-외부의 클라이언트에서에서 로컬 포트 포워딩으로 서버 접속 
- 
-  ssh -L 2223:localhost:2222 {server-id}@{server-ip} 
-   
- 다른 창에서 로컬호스트에 접속 
-   
-  ssh localhost -p 2223 
-   
-또는, 외부 컴퓨터에서 서버에 접속 후 로컬의 2222에 접속 
- 
-  ssh {server-id}@{server-ip} 
-  ssh localhost -p 2222 
-   
- 
-  - [[http://linux.systemv.pe.kr/ssh-%ED%8F%AC%ED%8A%B8-%ED%8F%AC%EC%9B%8C%EB%94%A9/|SSH 포트 포워딩]] 
-  - https://help.ubuntu.com/community/SSH/OpenSSH/PortForwarding 
-  - [[http://qgp9.github.io/blog/2016/03/26/ssh-proxy-jump-host#%EC%B6%94%EC%B2%9C%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95---proxycommand|SSH Proxy 와 점프호스트(경유서버를 이용한 목적서버 연결)]] 
- 
- 
-클라이언트의 ~/.ssh/config 에 다음 내용 추가 
- 
-  Host * 
-      ServerAliveInterval 120 
- 
-  - https://askubuntu.com/questions/127369/how-to-prevent-write-failed-broken-pipe-on-ssh-connection   
- 
- 
-<code python lab.py> 
-import argparse 
-from subprocess import run 
-from shlex import split 
-from socket import gethostname 
-import time 
-from colorama import Fore, init 
-from tqdm import trange 
- 
-SERVER = '${SERVER}' 
-init(autoreset=True) 
- 
-parser = argparse.ArgumentParser() 
-parser.add_argument('-P', '--port', default=2222) 
-args = parser.parse_args() 
- 
-nx = gethostname() 
-cmd = 'ssh -R {}:localhost:22 {}'.format(args.port, SERVER) 
- 
-while True: 
-    print('CMD:', cmd) 
-    print(Fore.LIGHTBLUE_EX + 'Connecting..') 
-    rus = run(split(cmd)) 
-    print(Fore.LIGHTRED_EX + 'Disconnected, retry after 30 sec.') 
-    for _ in trange(30): 
-        time.sleep(1) 
-</code> 
 ===== SSHFS ===== ===== SSHFS =====
  
줄 139: 줄 82:
  
   ssh {ip} {command}   ssh {ip} {command}
 +  ssh -t {ip} {command}  # interactive terminal (Error opening terminal: unknown. 에러가 발생할 때 사용)
      
 여러줄 명령어 실행 여러줄 명령어 실행
줄 149: 줄 93:
   # 127.0.0.1에 접속해서, 127.0.0.1에 접속해서, ping 127.0.0.1 실행   # 127.0.0.1에 접속해서, 127.0.0.1에 접속해서, ping 127.0.0.1 실행
   ssh 127.0.0.1 "echo 1; ssh 127.0.0.1 ""echo 2; ping 127.0.0.1"""   ssh 127.0.0.1 "echo 1; ssh 127.0.0.1 ""echo 2; ping 127.0.0.1"""
 +  
 +원격 아나콘다 환경 활성화
 +<code bash>
 +ssh {user}@{host} "source /home/rex8312/anaconda3/etc/profile.d/conda.sh; conda activate {virenv}; which python"
 +</code>
      
 python script에서 실행 python script에서 실행
줄 200: 줄 149:
   HostName 192.168.0.102   HostName 192.168.0.102
   User {id}   User {id}
 +  Port {port}
   IdentityFile /home/{id}/.ssh/id_rsa.pem   IdentityFile /home/{id}/.ssh/id_rsa.pem
 </code> </code>
줄 206: 줄 156:
   * http://www.haruair.com/blog/2219   * http://www.haruair.com/blog/2219
  
 +====== ssh: port forward ======
 +
 +  * [[ssh:turnnel]]
 +
 +
 +==== 참고 ====
 +
 +  * https://medium.com/@obaff/14-bash-tricks-to-optimize-ssh-connections-and-secure-remote-access-4e6fa2a0b0b4
  
 {{tag>ssh}} {{tag>ssh}}
ssh.1630648606.txt.gz · 마지막으로 수정됨: (바깥 편집)