세션을 열고 명령을 실행하는 배치 파일 또는 PuTTY (ssh) 바로 가기를 작성하십시오.


10

동일한 단일 명령을 실행하기 위해 SSH 세션을 여는 경우가 종종 있습니다. 비밀번호 (SSH 키 기반 인증을 통해)를 입력하지 않고 로그인하도록 모든 것을 설정 했으므로 PuTTY 또는 유사한 프로그램을로드하는 바로 가기 또는 배치 파일을 Windows에 만들 수있는 방법이 있는지 궁금했습니다. 명령 (및 결과가 좋으면 종료 될 수 있음).

답변:


14

명령 행 PuTTY 버전 plink.exe을 사용하여 선택한 호스트에 대한 SSH 연결을 초기화하십시오. -ssh스위치를 사용하여 SSH에 연결 하십시오 . -m스위치를 사용하면 명령 파일을 포함 할 수 있습니다.

plink.exe -ssh host1 -m C:\path\to\commands.txt

여기plink.exe 에서 다운로드 할 수 있습니다 .

마지막 단계는 plink.exe원하는 매개 변수를 포함하여 바로 가기를 만드는 것 입니다.

다른 다양한 매개 변수는 Plink 설명서 를 확인하십시오. Plink.exe 설명서


1
필요가 사용할 수 없습니다 -m가 그 명령 줄에서 직접 명령을 지정할 수 보는 바와 같이, 가용 스루풋과 스위치를 내 대답 .
Martin Prikryl

내가 사용하여 선호로이 답변 선택하고 -ssh host1대 퍼티 프로필 관련user@host
FreeSoftwareServers

@FreeSoftwareServers이 점에서 PuTTY와 차이는 없습니다. plink site commandPuTTY와 동일한 방식으로 수행 할 수 있습니다 (제외 command). Plink와 PuTTY에는 기본적으로 동일한 명령 줄 옵션 세트가 있습니다.
Martin Prikryl

8

명령 실행을 자동화하려면 PuTTY 자체가 아닌 Plink (PuTTY 패키지에서)를 사용하십시오 .

Plink는 명령 행에서 명령을 승인합니다.

plink.exe user@host command

PuTTY를 계속 사용하려면 -mswitch 를 사용하여 명령 파일을 지정할 수 있습니다 (Plink -m도 스위치를 지원함 ).


암호가 없다고 말했을 때 SSH 키 기반 인증을 의미한다고 지정했지만 암호로 가정했습니다. 나는 이것이 그대로 작동한다고 생각하지 않습니다. -i key또는 다음에 추가 된 매개 변수가 필요합니다.-pw password
FreeSoftwareServers

@FreeSoftwareServers이 점에서 PuTTY와 차이는 없습니다. plink site commandPuTTY와 동일한 방식으로 수행 할 수 있습니다 (제외 command). Plink와 PuTTY에는 기본적으로 동일한 명령 줄 옵션 세트가 있습니다.
Martin Prikryl

귀하의 답변에는 SSH 키 기반 인증 (일명 PWDless 로그인)을 사용하는 옵션이 포함되어 있지 않지만 올바른 플래그가 존재하지만 MrPowerUsers 답변에 포함 된 plink 매뉴얼 페이지에서 발견되었습니다. 질문이 더뿐만 아니라 사람의 페이지를 링크
FreeSoftwareServers

6

퍼티 구성을 사용하여이를 달성 할 수 있습니다.

퍼티를로드하고 세션을 구성하십시오.

여기서 실행할 원격 명령을 입력하십시오.

퍼티 원격 명령 상자

그런 다음 " 열기 " 를 클릭하기 전에 " 세션 "탭 (맨 위) 으로 돌아가서 구성을 저장하십시오.

이제 다음과 putty.exe같이 -load플래그를 추가하여 바로 가기를 만듭니다 .

%PATH_TO_PUTTY%\putty.exe -load my_config

이제 바로 가기를 클릭하면 세션이로드되고 명령이 실행됩니다.


멋진 외모, 병 시험 내일, 난 그냥 스크립트를 실행한다고 가정하고이 스크립트의 결과에 따라 세션을 종료 할 수 있습니다
FreeSoftwareServers

예, 명령이 종료되면 세션이 종료됩니다. PuTTY를 한 번만 수행하려면 (예 : 출력 검사) " 세션 "탭 에서 " 종료시 창 닫기 "를 설정 하십시오.
Attie

2

Windows 10을 사용하는 경우 Microsoft 에 OpenSSH (클라이언트 및 서버 ) 베타 버전이 있다고 합니다 .

[…] "선택 기능 관리"로 이동 한 다음 + "기능 추가"로 이동하십시오. 그런 다음 목록을 아래로 스크롤하여 Windows에서 OpenSSH 클라이언트 (베타) 및 OpenSSH 서버 (베타) 기능을 찾을 수 있습니다. Windows에서 다른 원격 서비스를 실행한다는 아이디어는 어려울 수 있으므로 서버를 설치하지 않으려는 경우 귀하를 탓하지 않습니다.

설치가 완료되면 ssh를 입력하고 다음과 같은 명령을 입력하여 명령 줄을 실행하고 OpenSSH 클라이언트를 사용할 수 있습니다 ssh ubuntu@someIP.

다음은 sshWindows 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 ~"

정말 멋지지만 SuperPuTTY를 좋아합니다. Windows OpenSSH도 계속 주시하겠습니다.
FreeSoftwareServers

원격 컴퓨터에 ssh 클라이언트가 있어야합니까? 내가 원격에있는 일부 컴퓨터가 Windows 10이 아니기 때문에 묻습니다.
Nelda.techspires

1
Nelda.techspiress @ 당신은 당신이 로그인 서버가 시스템에서 실행이 필요합니다 으로 만 당신이 로그인 시스템에서 클라이언트 필요 에서입니다. (따라서 한 머신에 다른 머신에 홉하기 위해 프록시로 로그인하면 중간 머신에 둘 다 필요합니다.)
Michael-Clay Shirky는 어디에 있습니까?

2

방금 몇 시간 동안 구문과 맨 페이지 조사를 절약하기 위해 만든 스크립트를 삽입한다고 생각했습니다.

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 옵션 인 경우

1
링크 만 답변에 찌그러집니다. 사이트가 다운되면 어떻게 되나요? 당신이 기여하고 싶다면 여기에서 스크립트를 공유하십시오. 여기에 코드와 함께 사이트에 소스 / 링크를 게시 할 수는 있지만 답변은 자체 포함되어야하며 다음 링크가 필요하지 않습니다.
FreeSoftwareServers 2016 년

1
배치 내용 붙여
Todd Porter

호스트 키를 "자동 캐시" 하지 마십시오 . 호스트 키 확인은 SSH 세션 보안의 필수 부분입니다. PuTTY (및 도구)는 호스트 키를 요구하거나 재미를 요구하지 않습니다. 이유가 있습니다! + 또한 사용자 데이터 SSH.ppk와 스크립트 ) to Program Files 폴더를 저장하지 않아야합니다.
Martin Prikryl

스크립트없이 여러 IP에서 스크립트를 실행하는 방법을 추천 할 수 있습니까? a) 이는 일반적인 사용자 데스크톱을위한 것이 아니며, 보안이 서버에 더 많은 사람들이 액세스하는 관리 서버를위한 것입니다. b) 보안 위험은 정확히 무엇입니까? 호스트 키 캐싱은 선택 사항이며 범위 전체에서 한 번만 수행해야합니다. 키를 캐싱하지 않고 스크립트를 다시 실행하면 여전히 키 변경 사항을보고 호스트하며 스크립트가 계속 진행되지 않습니다.
Todd Porter

...... 키와의 계약에 동의합니다. 공유 폴더가있는 NAS의 공유 폴더를 가리 킵니다. 다른 사용자들이 다를 수 있기 때문에 방금 경로를 선택했습니다
Todd Porter

1

SSH 연결을 관리하는 mRemoteNG, MOBAxTerm 또는 SecureCRT와 같은 소프트웨어를 볼 수도 있습니다. 또한 저장된 PuTTY 세션과 연결되므로 템플릿을 세션에 적용 할 수 있습니다.


0

파일 서버에 저장하고 바탕 화면에 바로 가기를 만들 수있는 마지막 "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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.