동일한 단일 명령을 실행하기 위해 SSH 세션을 여는 경우가 종종 있습니다. 비밀번호 (SSH 키 기반 인증을 통해)를 입력하지 않고 로그인하도록 모든 것을 설정 했으므로 PuTTY 또는 유사한 프로그램을로드하는 바로 가기 또는 배치 파일을 Windows에 만들 수있는 방법이 있는지 궁금했습니다. 명령 (및 결과가 좋으면 종료 될 수 있음).
동일한 단일 명령을 실행하기 위해 SSH 세션을 여는 경우가 종종 있습니다. 비밀번호 (SSH 키 기반 인증을 통해)를 입력하지 않고 로그인하도록 모든 것을 설정 했으므로 PuTTY 또는 유사한 프로그램을로드하는 바로 가기 또는 배치 파일을 Windows에 만들 수있는 방법이 있는지 궁금했습니다. 명령 (및 결과가 좋으면 종료 될 수 있음).
답변:
명령 행 PuTTY 버전 plink.exe
을 사용하여 선택한 호스트에 대한 SSH 연결을 초기화하십시오. -ssh
스위치를 사용하여 SSH에 연결 하십시오 . -m
스위치를 사용하면 명령 파일을 포함 할 수 있습니다.
plink.exe -ssh host1 -m C:\path\to\commands.txt
여기plink.exe
에서 다운로드 할 수 있습니다 .
마지막 단계는 plink.exe
원하는 매개 변수를 포함하여 바로 가기를 만드는 것 입니다.
다른 다양한 매개 변수는 Plink 설명서 를 확인하십시오. Plink.exe 설명서
-ssh host1
대 퍼티 프로필 관련user@host
plink site command
PuTTY와 동일한 방식으로 수행 할 수 있습니다 (제외 command
). Plink와 PuTTY에는 기본적으로 동일한 명령 줄 옵션 세트가 있습니다.
명령 실행을 자동화하려면 PuTTY 자체가 아닌 Plink (PuTTY 패키지에서)를 사용하십시오 .
Plink는 명령 행에서 명령을 승인합니다.
plink.exe user@host command
PuTTY를 계속 사용하려면 -m
switch 를 사용하여 명령 파일을 지정할 수 있습니다 (Plink -m
도 스위치를 지원함 ).
-i key
또는 다음에 추가 된 매개 변수가 필요합니다.-pw password
plink site command
PuTTY와 동일한 방식으로 수행 할 수 있습니다 (제외 command
). Plink와 PuTTY에는 기본적으로 동일한 명령 줄 옵션 세트가 있습니다.
퍼티 구성을 사용하여이를 달성 할 수 있습니다.
퍼티를로드하고 세션을 구성하십시오.
여기서 실행할 원격 명령을 입력하십시오.
그런 다음 " 열기 " 를 클릭하기 전에 " 세션 "탭 (맨 위) 으로 돌아가서 구성을 저장하십시오.
이제 다음과 putty.exe
같이 -load
플래그를 추가하여 바로 가기를 만듭니다 .
%PATH_TO_PUTTY%\putty.exe -load my_config
이제 바로 가기를 클릭하면 세션이로드되고 명령이 실행됩니다.
Windows 10을 사용하는 경우 Microsoft 에 OpenSSH (클라이언트 및 서버 ) 베타 버전이 있다고 합니다 .
[…] "선택 기능 관리"로 이동 한 다음 + "기능 추가"로 이동하십시오. 그런 다음 목록을 아래로 스크롤하여 Windows에서 OpenSSH 클라이언트 (베타) 및 OpenSSH 서버 (베타) 기능을 찾을 수 있습니다. Windows에서 다른 원격 서비스를 실행한다는 아이디어는 어려울 수 있으므로 서버를 설치하지 않으려는 경우 귀하를 탓하지 않습니다.
설치가 완료되면 ssh를 입력하고 다음과 같은 명령을 입력하여 명령 줄을 실행하고 OpenSSH 클라이언트를 사용할 수 있습니다
ssh ubuntu@someIP
.다음은
ssh
Windows OpenSSH 클라이언트와 함께 제공 되는 현재 (2017 년 11 월 28 일 기준) 명령 사용법 안내서입니다.C:\WINDOWS\system32>ssh usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] C:\WINDOWS\system32>
이것이 작동 ssh
하면 * Nix에서와 같이 사용할 수 있어야합니다 .
C:\WINDOWS\system32>ssh user@host "ls -l ~"
방금 몇 시간 동안 구문과 맨 페이지 조사를 절약하기 위해 만든 스크립트를 삽입한다고 생각했습니다.
a) SingleIP, IP 범위 또는 IPList 파일
b) IP / 범위에서 실행할 스크립트 이름 (실제 유닉스 sh / ksh 유형 스크립트)
c) 선택적으로 포트 22가 열린 상태 (예 : 일부 비 Linux 시스템의 서브넷)에 대해 nmap 스캔을 수행합니다.
-퍼티가 IP를 피하고 싶지 않다
d) 선택적으로 pscp 명령을 실행하여 호스트 키를 자동 캐시합니다 (퍼티는 자동으로 수행하지 않음)
이 배치는 다음을 가정합니다.
1. C : \ Program Files \ PuTTY \에 전체 PuTTY 패키지 및 SSH 키가 설치되어 있습니다.
2. C : \ Program Files \ PuTTY \ scripts \에 설치된 배치 / 스크립트 / IPlist 파일
3. NMAP 및 PuTTY 작업 디렉토리는 명령 경로에 있습니다.
https://www.harmonyhit.com/PuttyBatch.bat
이것은 대부분의 컴퓨터에서 단일 스크립트 (예 : SSL 인증서 업데이트)를 보유 할 때 유용합니다
완전한 배치 파일은 다음과 같습니다.
@ECHO OFF rem SSH 키 위치를 반영하도록 CACHEKEY 및 SCRIPT 섹션을 수정해야합니다. IPFILE = IPList_temp.txt 설정 runagain = n으로 설정 OPTION = 1로 설정 범위 설정 = IP 설정 = SCAN = n으로 설정 KEYCACHE = n으로 설정 :선택권 CLS ECHO (작업 디렉토리는 C : \ Program Files \ PuTTY \ scripts \로 설정 됨) 에코. ECHO 1. 단일 IP ECHO 2. IP 목록 파일 ECHO 3. IP 범위 에코. set / p OPTION = "IP 유형 선택 :" % OPTION % == 3 GOTO IPRANGE 인 경우 % OPTION % == 2 GOTO IPLIST 인 경우 % OPTION % == 1 인 경우 GOTO SINGLEIP echo 유효한 옵션을 선택하십시오 GOTO 옵션 : IPRANGE ECHO 다음 예와 같이 IP 범위를 입력하십시오. 여러 범위 사이에 공백을 사용하십시오. ECHO, 즉 "10.21.0.15-99 10.21.1.15-100" set / p RANGE = 입력 범위 : 에코 % RANGE %> % IPFILE % GOTO SCRIPTNAME : 단일 set / p IP = IP 입력 : 에코 % IP %> % IPFILE % GOTO SCRIPTNAME : IPLIST set / p IP = IPList 파일 이름 입력 : / Y % IP % % IPFILE % 복사 GOTO SCRIPTNAME : SCRIPTNAME set / p SCRIPT = 스크립트 이름을 입력하십시오 : 존재하지 않는 경우 % SCRIPT % ( 에코 파일 이름이 없습니다! GOTO SCRIPTNAME) 에코. set / p SCAN = Nmap을 먼저 검사합니까? (권장) : % SCAN % == n GOTO 인 경우 : RUNCACHE rem nmap이 파일에서 IP 범위를 읽을 수없고 nmap 명령에 직접 입력해야하므로 IP 유형이 "범위"인지 확인하십시오. % OPTION % == 3 GOTO NMAPRANGE 인 경우 : NMAP 포트 22에 대한 에코 스캐닝 IP가 열려 있습니다 ... nmap --open -n -p22 -iL % IPFILE % -oG-| findstr / E Up> nmap_temp.txt 고트 애프터 맵 : NMAPRANGE 포트 22에 대한 에코 스캐닝 IP가 열려 있습니다 ... nmap --open -n -p22 % RANGE % -oG-| findstr / E Up> nmap_temp.txt : 애프터 맵 에코 완료 rem nmap 형식이 올바르지 않습니다. 다음은 추가 정보를 제거합니다. (nmap_temp.txt)의 / f "tokens = 2"%% A에 대해 %% A를 반향시킵니다 >> nmap_temp2.txt rem IP 끝에서 숨겨진 공간을 제거합니다 ( "repl"이 배치 파일 디렉토리에 있어야 함). "nmap_temp2.txt"유형 | "" ""> % IPFILE % 반복 런치 set / p KEYCACHE = SSH 키 스캔 및 캐시 (y / n)? % KEYCACHE % == n GOTO SCRIPT 인 경우 캐치 키 rem 아직 캐시되지 않은 경우 SSH 호스트 키를 캐시하기 위해 모든 IP를 통해 실행 / F "토큰 = *"에 대해 (% IPFILE %)의 %% A는 수행합니다 (echo y | "C : \ Program Files \ PuTTY \ pscp.exe"-l root -i "C : \ Program Files \ PuTTY \ SSH .ppk "-touch %% A : / tmp / test) :스크립트 / F "토큰 = 1"(% IPFILE %)의 %% A는 ( "C : \ Program Files \ PuTTY \ putty.exe"-ssh %% A -t -l root -i "C : \ Program Files \ PuTTY \ SSH.ppk "-m"C : \ Program Files \ PuTTY \ scripts \ % SCRIPT % ") 존재하는 경우 nmap_temp.txt (del nmap_temp.txt) 존재하는 경우 nmap_temp2.txt (del nmap_temp2.txt) set / p runagain = "Enter를 눌러 완료하거나 y를 눌러 다시 실행하십시오." % runagain % == y GOTO 옵션 인 경우
SSH.ppk
와 스크립트 ) to
Program Files 폴더를 저장하지 않아야합니다.
파일 서버에 저장하고 바탕 화면에 바로 가기를 만들 수있는 마지막 "CMD"입니다.
::FreeSoftwareServers
::Automated Opening of SSH Tunnel & Execute CMD on Remote Host
::/superuser/1278434/create-a-batch-file-or-shortcut-to-putty-ssh-that-opens-a-session-and-runs-a-c
set puttydir="C:\Program Files\PuTTY"
set exe=plink.exe
::Profile must exist in PuTTY
set remotehost=FileServer
set remotecmd="chmod 777 /mnt/mdadm/torrents -R"
cd %puttydir%
%exe% %remotehost% %remotecmd%
::Test First Manually in CMD Prompt
::Note Remote Host does NOT have access to BashRC Alias's
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer touch /tmp/testfile
::start "C:\Program Files\PuTTY\" plink.exe -ssh FileServer ~/script.sh
-m
가 그 명령 줄에서 직접 명령을 지정할 수 보는 바와 같이, 가용 스루풋과 스위치를 내 대답 .