저는 원격 작업에 SSH와 SFTP를 자주 사용합니다. 후자는 기본적으로 SSH를 통해 실행되는 파일 복사 프로토콜이며, 이 두 도구가 아직 통합되지 않은 이유가 "아무도 지금까지 하고 싶어하지 않는다"는 것 외에 다른 이유가 있는지 궁금합니다. "통합"이란 SSH 모드를 SFTP로 변경하고 동일한 세션에서 다시 되돌릴 수 있는 방법이 있어야 함을 의미합니다. 예를 들어:
SSH를 사용하여 로그인합니다.
$ ssh -i privkey [email protected]
Last login: Tue Nov 18 10:47:25 2014
-bash-4.1$ ls
cgi-bin error html icons manual
-bash-4.1$ cd html
-bash-4.1$ ls
index.html
-bash-4.1$ md5sum index.html
ad7c5e1ed76c2d4efd6613315b4d1411
index.html을 대체하고 싶으므로 마법 키보드 조합을 적용하여 모드를 전환하세요.
sftp> put index.html
SSH 모드로 돌아가려면 다른 키보드 조합을 사용하십시오.
-bash-4.1$ md5sum index.html
dd208743fa38dd55ec21c1ed75fa035c
매우 실용적이며 복사하여 붙여넣거나 두 세션을 열 필요가 없습니다. 이를 달성하려면 SSH 프로토콜을 크게 변경해야 합니까?
답변1
이전 버전과 호환됩니다!
ftp는 1971년부터 어떤 형태로든 존재해 왔습니다. 이는 1980년에 표준 IP 파일 전송 프로토콜이 되었습니다. "sftp"는 단순히 네트워크를 통해 데이터를 전송할 때 암호화를 사용하는 ftp 프로토콜이지만 그 외에는 "ftp" 프로토콜과 동일합니다. 이를 통해 수백만 개의 기존 스크립트와 프로세스가 최소한의 변경으로 향상된 보안을 활용할 수 있습니다.
ssh - 보안 셸 프로토콜은 보안 네트워크를 통해 셸 명령을 실행하도록 설계되었습니다. ssh와 함께 제공되는 다양한 네트워크 유틸리티 명령은 쉘 스크립터에게 친숙한 Bourne 쉘 명령을 모델로 하므로 "scp" 구문은 대략적으로 unix "cp" 구문을 기반으로 합니다.
답변2
모든 FTP 세션 메커니즘, 별도의 데이터 및 반대 방향의 제어 연결, 현재 디렉터리 등은 SSH 내에서 구현하기 어렵고 의미가 없다고 말하고 싶습니다. 복제는 단지 연결을 재사용할 수도 있고 실제로는 반대쪽 끝에서 셸을 실행하고 있을 수도 있습니다(항상 그런 것은 아닙니다).
파일을 빠르게 복사하려면 기존 연결을 재사용할 수 있습니다. OpenSSH를 사용한다고 가정합니다.
일반 SSH 연결을 설정하고 파일을 복사해야 할 경우 다른 터미널 window/tmux window/tty 를 사용하여 명령을 실행하세요 scp
.
이를 설정한 경우 ControlMaster
(전역적으로 또는 특정 호스트 그룹에 대해) ~/.ssh/config
기존 scp
연결이 재사용되며 비밀번호를 묻는 메시지가 표시되지 않으며 다시 연결하는 데 시간을 낭비하지 않습니다.
유일한 문제는 scp
기존 세션에 연결되지 않고 셸의 현재 디렉터리를 재사용하지 않는다는 것입니다. 그러나 이것이 항상 가능한 것은 아닙니다. 원격 셸이 이미 다른 프로세스( tmux
, 등) mc
를 실행하고 있다고 가정합니다. tail -f
따라서 완전히 작성해야 합니다: scp index.html hemote.host:path/to/www/
. 일반적으로 원격 창에서 경로를 복사하는 것은 어렵지 않습니다.
불행하게도 ~Ctrl+ZOR은 ~&멀티플렉싱 세션에서는 작동하지 않으므로 이전 VT-220을 사용하는 경우에는 tmux
OR을 미리 실행해야 합니다 screen
.
다른 데이터 전송 모델 에도 동일하게 적용되거나 rsync
지원 sshfs
되지만 연결을 공유할 수도 있습니다.sftp