는 최고 방법을 가지고 파일에서 원격 호스트를 로컬 호스트 이상 SSH 세션?

StackOverflow https://stackoverflow.com/questions/49896

  •  09-06-2019
  •  | 
  •  

문제

에 연결할 때 원격 호스트를 통해 ssh,나는 빈번하게하고자하는 파일 시스템에 로컬 시스템에 대한 확인 또는 처리합니다.하는 방법이 있 파일을 복사하고 이상이 없는(a)새로운 터미널을 일시 정지/ssh 세션(b)인증하려면 다시 로컬 또는 원격 호스트는(c)경우에도 한쪽 또는 양쪽의 호스트 뒤에 NAT 모니터링 가능합니다.

의 목표는 이용으로 많이 현재의 상태로 가능:이 있는 연결이 사이의 두 컴퓨터는 나는 인증된 모두에서,나의 작업 디렉터리에서 파일---그래서 나를 열어야 하지 않는 또 다른 터미널 및 복사 및 붙여 원격 호스트와 경로에서는 내가 무엇을 now.최고의 솔루션도 없을 필요한 모든 설정하기 전에 세션을 시작했지만,경우에는 설치 한 시간 또는 수 있는 자동화된 보다 완벽하게 허용됩니다.

도움이 되었습니까?

해결책 7

여기에 내가 선호하는 솔루션은 이 문제를 해결합니다.설 역 ssh 터널을 생성하면 ssh 세션이 있습니다.이것은 쉽게 이루어진에 의해 두 개의 강타 기능:grabfrom()정의할 필요는 로컬 호스트하는 동안 잡아()해야에 정의된 원격 호스트.추가할 수 있습니다 다른 ssh 변수를 사용할(예를들면-X-Y)십시오.

function grabfrom() { ssh -R 2202:127.0.0.1:22 ${@}; };
function grab() { scp -P 2202 $@ localuser@127.0.0.1:~; };

사용법:

localhost% grabfrom remoteuser@remotehost
password: <remote password goes here>
remotehost% grab somefile1 somefile2 *.txt
password: <local password goes here>

긍정:

  • 그것은 작동하지 않고 특별한 소프트웨어에 호스트를 넘어 OpenSSH
  • 그것은 작동 할 때 로컬 호스트로 뒤에 NAT 라우터
  • 그것을 구현할 수 있으로는 한 쌍의 두 개의 중 하나-라인을 강타 기능

네거티브:

  • 그것을 사용하여 고정된 포트 번호:
    • 와 함께 작동하지 않을 것이 여러 연결을 원격 호스트
    • 와 충돌할 수 있습니다 프로세스를 사용하는 포트에서 원격 호스트
  • 그것은 필요 localhost 를 받아들이 ssh 연결
  • 그것은 필요한 특별한 명령어에서 시작션
  • 지 않는 암시적으로 처리에 대한 인증 localhost
  • 그것은 허용되지 않 중 하나를 지정 대상 디렉토리에 localhost
  • 는 경우를 잡아서 여러 localhosts 동일한 원격 호스트,ssh 지 않을 것 같은 열쇠 변화

미래의 작동:이것은 여전히 매우 불편한 점 등에 대한 의견을 보내 주세.분명히 그것은 것을 처리 할증 문제를 설정하여 ssh keys 적절하게도 쉽도록 명세서의 원격 디렉토리를 추가하여 매개변수를 잡아()

더 많은 어려운 해결하는 기타 네거티브.그것은 좋은 것을 선택하는 동적 포트가지만 말할 수는 없 우아한 방법으로 전달하는 포트 쉘에서 원격 호스트최고로 내가 말할 수있는,예를 들어,윈도우지 않을 설정할 수 있는 임의의 환경변수를 원격 호스트와 bash 걸릴 수 없습니다 환경변수 에서 명령 라인에 인수입니다.는 경우에도 당신이 선택할 수 있는 동적 포트,방법은 없을 위해 그것에서 사용되지 않습니다 원격 호스트 연결하지 않고 처음이다.

다른 팁

zssh (a ZMODEM 래퍼를 통해 openssh)는 정확히 무엇을 원합니다.

  • 설치 zssh 고 대신 사용하여 예를 들어,윈도우(나는 가정으므로 일반적으로 사용)

  • 당신이 있어야 할 것은 lrzsz 패키지가 설치되어 있어 모두에서 시스템입니다.

그런 다음,전송하는 파일 zyxel.png 에서 원하는 로컬 호스트:

antti@local:~$ zssh remote
Press ^@ (C-Space) to enter file transfer mode, then ? for help
...
antti@remote:~$ sz zyxel.png
**B00000000000000
^@
zssh > rz
Receiving: zyxel.png
Bytes received:  104036/ 104036   BPS:16059729

Transfer complete
antti@remote:~$ 

업로드가 마찬가지로는 것을 제외하고,당신은 단지 전환 rz(1)sz(1).

퍼티는 사용자가 시도 할 수 있습니다 Le 퍼티, 는 비슷한 기능을 수행할 수 있습니다.

에서 리눅스를 사용 ssh-agent 와 sshfs.를 설정해야 합 sshd 연결을 받아들이는 키와 쌍이다.다음 사용하 ssh-추가 당신에게 중요하 ssh-agent 그래서 당신이 있지 않는 암호를 입력합니다.을 사용하십시오-초 t,그래서 키되지 않은 숙박로드됩니다.
ssh-추가-t3600/home/user/.ssh/ssh_dsa

후에,
sshfs 호스트 이름://PathToMountTo/
가 탑재 서버의 파일 시스템에서의 기계 그래서 당신은에 액세스 할 수 있습니다.

개인적으로,제가 쓴 작은 강타하는 스크립트를 추가고 산을 내가 사용하는 서버의 가장 그래서 때,나는 작업을 시작하는 시기가 실행하는 스크립트를 입력합니다.

를 사용하여 몇 가지 작은 알려진 그리고 거의 사용되는 기능의 openssh 구현을 달성할 수 있는 정확하게 당신이 원하는 무엇!

  • 을 활용의 현재 상태
  • 사용 작업 디렉터리 당신은 당신
  • 이 필요하지 않습 터널 설치하기 전에 세션을 시작
  • 가 필요하지 않습 열기는 별도의 공항 터미나의 연결
  • 로 사용할 수 있는 한 시간 거래서화 또는 일부로 사용할 수 있는 자동화 세션

당신은 단지 유형이 무엇이에서 각각의 local>, remote>, 고 ssh> 프롬프트에서 예 아래입니다.

local> ssh username@remote
remote> ~C
ssh> -L6666:localhost:6666
remote> nc -l 6666 < /etc/passwd
remote> ~^Z
[suspend ssh]
[1]+  Stopped                 ssh username@remote
local> (sleep 1; nc localhost 6666 > /tmp/file) & fg
[2] 17357
ssh username@remote
remote> exit
[2]-  Done                    ( sleep 1; nc localhost 6666 > /tmp/file )
local> cat /tmp/file
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
...

또,더 자주 당신이 가고 싶은 다른 방향으로는 경우,예를 들어, 과 같은 작업을 수행 할 전송 ~/.ssh/id_rsa.pub 에서 파일 귀하의 로컬 컴퓨터 ~/.ssh/authorized_keys 파일의 원 기계입니다.

local> ssh username@remote
remote> ~C
ssh> -R5555:localhost:5555
remote> ~^Z
[suspend ssh]
[1]+  Stopped                 ssh username@remote
local> nc -l 5555 < ~/.ssh/id_rsa.pub &
[2] 26607
local> fg
ssh username@remote
remote> nc localhost 5555 >> ~/.ssh/authorized_keys
remote> cat ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2ZQQQQBIwAAAQEAsgaVp8mnWVvpGKhfgwHTuOObyfYSe8iFvksH6BGWfMgy8poM2+5sTL6FHI7k0MXmfd7p4rzOL2R4q9yjG+Hl2PShjkjAVb32Ss5ZZ3BxHpk30+0HackAHVqPEJERvZvqC3W2s4aKU7ae4WaG1OqZHI1dGiJPJ1IgFF5bWbQl8CP9kZNAHg0NJZUCnJ73udZRYEWm5MEdTIz0+Q5tClzxvXtV4lZBo36Jo4vijKVEJ06MZu+e2WnCOqsfdayY7laiT0t/UsulLNJ1wT+Euejl+3Vft7N1/nWptJn3c4y83c4oHIrsLDTIiVvPjAj5JTkyH1EA2pIOxsKOjmg2Maz7Pw== username@local

약간의 설명을 위해서입니다.

첫 번째 단계는 LocalForward;지 않는 경우에는 이미 하나 설립할 수 있습니다 다음 사용 ~C 탈출 캐릭터를 열고 ssh 명령 라인에는 다음과 같은 명령:

remote> ~C
ssh> help
Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KR[bind_address:]port                 Cancel remote forward

이 예에서 나는 설정 LocalForward 에 포트 6666localhost 모두를 위해 클라이언트와 서버포트 번호가 될 수 있습 임의의 열린 포트.

nc 명령에 netcat 패키지그것은 설명 "TCP/IP 스위스 군용 나이프";그것은 간단하면서도 매우 유연하고 프로그램에 유용합니다.그것의 표준 부분의 유닉스 toolbelt.

이 시점에서 nc 는 포트 6666 과를 기다리는 또 다른 프로그램을 연결하는 포트에 보낼 수 있도록 하는 내용의 /etc/passwd.

다음으로 우리가 이용하는 또 다른 탈출 캐릭터 ~^Ztilde 다음 control-Z.이것을 일시적으로 중단 ssh 과정 방울은 우리가 다시 우리의 쉘입니다.

하나는 뒤로는 로컬 시스템에서 사용할 수 있는 nc 에 연결하는 전달된 포트 6666.주의 부족 -l 이 경우에는 옵션 nc 포트에서 수신하면 서버는 우리가 원하는 것이 아;대신 우리는 단지 사용 nc 클라이언트로 에 연결 이미 듣기 nc 원격 측.

마술의 나머지 주변 nc 명령이기 때문에 필요한 경우 당신은 리콜 위에 내가 말했다는 ssh 프로세스가 일시적으로 일시 중단,그래서 & 를 넣어 전체 (sleep + nc) 식 배경으로 그리고 sleep 은 당신이 충분한 시간을 ssh 환으로 전경 fg.

두 번째 예에서 아이디어는 기본적으로 같은 제외하고 우리는 설정 터널에가는 다른 방향으로 사용 -R-L 록 우리가 설정 RemoteForward.다음에 로컬의 상태를 나타냅니다 당신이 사용하고 싶 -l 인수 nc.

이스케이프 문자가 기본적으로~하지만 당신은 그것을 변경할 수 있습니다:

 -e escape_char
         Sets the escape character for sessions with a pty (default: ‘~’).  The escape character is only recognized at the beginning of a line.  The escape character followed by a dot
         (‘.’) closes the connection; followed by control-Z suspends the connection; and followed by itself sends the escape character once.  Setting the character to “none” disables any
         escapes and makes the session fully transparent.

에 대한 자세한 설명 명령을 사용할 수 있 escape 문자를 사용할 수 있에 ssh ncursesw 에는 와이드

ESCAPE CHARACTERS
     When a pseudo-terminal has been requested, ssh supports a number of functions through the use of an escape character.

     A single tilde character can be sent as ~~ or by following the tilde by a character other than those described below.  The escape character must always follow a newline to be interpreted
     as special.  The escape character can be changed in configuration files using the EscapeChar configuration directive or on the command line by the -e option.

     The supported escapes (assuming the default ‘~’) are:

     ~.      Disconnect.

     ~^Z     Background ssh.

     ~#      List forwarded connections.

     ~&      Background ssh at logout when waiting for forwarded connection / X11 sessions to terminate.

     ~?      Display a list of escape characters.

     ~B      Send a BREAK to the remote system (only useful for SSH protocol version 2 and if the peer supports it).

     ~C      Open command line.  Currently this allows the addition of port forwardings using the -L, -R and -D options (see above).  It also allows the cancellation of existing remote port-
             forwardings using -KR[bind_address:]port.  !command allows the user to execute a local command if the PermitLocalCommand option is enabled in ssh_config(5).  Basic help is avail‐
             able, using the -h option.

     ~R      Request rekeying of the connection (only useful for SSH protocol version 2 and if the peer supports it).

사용 ControlMaster(-M 스위치)이 최상의 솔루션,방법이 간단하고 쉽게의 나머지 부분보다는 답니다 여기에.그것을 공유할 수 있는 단일 연결이 세션이 있습니다.같은 소리가 무슨 포스터를 원한다.당신은 여전히 유형 scp 또는 sftp 명령 라인을 하지만입니다.그것을 시도하십시오.내가 사용하는 그것의 모든 내 ssh 로 연결하지 못하도록 차단.

이를 위해서는 내가 내 집 라우터 설정을 앞으로의 포트는 22 다른 컴퓨터(방화벽만 받아들이 ssh 연결에서 작동 기계)그리고 내가 또한 계정 설정 DynDNS 제공하는 동적 DNS 는 것이 해결해 나 가 자동으로 IP.

그 때 나는 ssh 으로 내 컴퓨터 제일 먼저를 실행하는 스크립트 시작 ssh-agent(하는 경우 서버는 그렇게 하지 않 자).스크립트를 실행입니다:

#!/bin/bash

ssh-agent sh -c 'ssh-add < /dev/null && bash'

그것은 요청에 대한 내 ssh 키 암호는 입력하지 않아도 그것은 모든 시간입니다.당신이 필요하지 않는 경 ssh 키를 사용하여 암호가 없으.

의 나머지 부분에 대한 세션에 파일을 전송하시기는 간단으로

scp file_to_send.txt your.domain.name:~/

해킹이라는 ssh-xfer 는 주소가 정확한 문제이지만,필요한 패치 OpenSSH 는 리 고 리 모두를 부 또 담당까지로 한다.

당신이 사용할 수 있습 SCP 프로토콜 tranfering 습니다.할 수 있는 이 링크를 참조하십시오

http://tekheez.biz/scp-protocol-in-unix/

할 수 있어야를 설정하는 공공 및 개인키지 않도록 인증이 필요합니다.

는 방법 당신이 그것에 따라 달라집 보안 요구사항 등을(있다는 것을 알고 있 linux/unix ssh 웜 보이는 것입니다에서 키를 찾는 다른 호스트 그들은 공격할 수 있다).

내가 이렇게 모든 시간에서 모두 뒤에 당신과 역사 거품 라우터입니다.나는 생각을 변경해야 할 수 있습의 몇 가지 설정을 하지만 그것은 큰 문제가되지 않습니다.

사용-M 스위치입니다.

"장소 ssh 클라이언트로'주인'모드 연결을 위해 공유합니다.여러-M 옵션이 장소 ssh 로`master"모드로 확인하기 전에 필요한 슬레이브 연결은 받아들여집니다.의 설명을 참조하십시오 ControlMaster 에 ssh_config(5)세요."

I don't quite see 는 방법에 대한 답변이 있는 영업 이익의 질문이 있을 확장하에서 이 비트,데이비드?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top