Python
2014.04.22 13:44

paramiko로 SSH 접속하기

조회 수 21716 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print

http://ujuc.kr/2014/04/07/python-paramiko/


[Python] paramiko

게시자: Sungjin Gang (ujuc)

한글로된 글이 없어서 우선 내가 알아낸 곳과 사용한 곳까지 작성을 해둘려고한다.

PARAMIKO

  • Python 2.6+, 3.3+에서 사용할 수 있는 SSHv2 구현체이다.
  • 물론 Client, Server를 둘다 사용이 가능하다.
  • 저 레벨 암호화를 위해서 PyCrypro(이부분은 Python C 확장으로 구현)를 제외한 나머지 부분들은 전부 Python으로만 구현되어있다.

사용

1. 사용 예제

1
2
3
4
import paramiko
 
ssh = paramiko.SSHClient()
ssh.connect('127.0.0.1', username='ujuc', password='lol')

2. Host Keys

  • 첫 접근시 받아오는 Host Keys가 있다. 이것을 받아서 저장하던 날려먹던 상관은 하지 않지만 있어야지 접근이 가능하다.
    • 처음 ssh로 접근시 무의식적으로 yes를 누르는 그것!!
  • 그러다보니 여기서도 그것에 관련된 내용을 사용할 수 있다.
  • set_missing_host_key_policy(policy)를 이용하여 host keys를 받아 저장할 것인지 아닌지를 판단하게 되는데. 기본값은 RejectPolicy로 되어있으며,yes를 받아와야한다면 AutoAddPolicy를 사용하도록 한다.
1
2
3
4
5
import paramiko
 
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('127.0.0.1', username='ujuc', password='lol')
  • 물론 Public key를 이용해서 비밀번호 없이 접근이 가능하도록 할 수 있을듯 한데 그건 좀 확인이 필요할듯.

3. 실행

  • 실행 명령어 exec_command를 실행하게되면, 값을 3개를 tuple로 받아온다.
  • stdinstdoutstderr이다.
    *명령어에 대한 값들을 받아와 확인할때는 아래와 같이 작성을 하면된다.
1
2
3
stdin, stdout, stderr = ssh.exec_command()
stdout.readlines()
['test\n']
  • 만약 sudo명령어가 필요한 경우,
1
2
3
4
stdin, stdout, stderr = ssh.exec_command('sudo')
<span class="skimlinks-unlinked">stdin.write('lol\n</span>')
<span class="skimlinks-unlinked">stdin.flush</span>()
data = <span class="skimlinks-unlinked">stdout.read</span>()
  • 위와 같이하여 작성을 하도록 한다.
  • 그리고 write다음에는 flush를 꼭 해줘야 작동을 하니 그점은 주의하도록 한다. 관련 내용은 여기에 있다

4. 연결 끊기

  • 작업이 끝났으면 연결을 끊어야된다.
  • 그냥 close()를 불러오면 알아서 끊어준다.

5. SFTP 사용.

  • 어찌보면 ssh를 사용하면서 편했던 것이 sftp의 사용이다. 간단한 사용방법과ssh가 설치가되어있으면 따로 ftp를 생성하지 않더라도 간단한 파일을 주고 받을 수 있도록 되어있기 때문이다.
  • 먼저 ssh로 접속한 다음, open_sftp()후 파일을 가져올때는get('localfile.py', 'remotefile.py')를 이용하고, 올려둘때는put('localfile.py', 'remotefile.py')를 사용하면된다.

참고 자료

Paramiko Homepage
Docs paramiko
SSH Programming With Paramiko | Completely Different
Paramiko: SSH and SFTP With Python


Dreamy의 코드 스크랩

내가 모으고 내가 보는

List of Articles
번호 분류 제목 날짜 조회 수 추천 수
311 Pi 아두이노 데이터 저장하기(Arduino EEPROM 사용하기) 2019.12.24 18103 0
310 JAVA java JSON Parsing 예제들 2017.12.21 18036 0
309 LINUX mc(Midnight Commander) 사용법 2 2014.04.07 17977 0
308 Android 자바 call stack을 임의로 보는 방법 2012.09.05 17870 0
307 C# 인터넷 연결상태 확인 2013.02.01 17793 0
306 C 정규식 테스트 사이트 2012.09.20 17680 0
305 Pi [아두이노] 포트를 직접 억세스하기 (Direct Port Manipulation in Arduino) 1 2017.07.24 17433 0
304 Android 안드로이드에서 Database를 다뤄보자 2015.03.03 17425 0
303 LINUX Samba 설치 및 설정 방법 2013.03.29 17345 0
302 개념 DLNA(Digital Living Network Alliance) file 2012.01.27 17339 0
301 개념 Android CTS(Android Compatibility Test Suite) 2012.02.15 17337 0
300 LINUX 간단 UNIX / LINUX 명령어 정리 2012.02.28 17290 0
299 C# c# file i/o 샘플 2012.01.04 17107 0
298 LINUX [Shell Script] 쉘 스크립트에서 getopt 사용하는 법 2014.11.09 17092 0
297 Android adb 로 low battery 이벤트 날리기 2013.04.19 16963 0
목록
Board Pagination ‹ Prev 1 ... 9 10 11 12 13 14 15 16 17 18 ... 34 Next ›
/ 34

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5