Tạo một tệp bó hoặc lối tắt đến PuTTY (ssh) để mở phiên và chạy lệnh


10

Tôi thường thấy mình mở một phiên SSH để chạy cùng một lệnh. Tôi có mọi thứ được thiết lập để đăng nhập mà không cần nhập mật khẩu (Qua Auth Dựa trên khóa SSH), vì vậy tôi tự hỏi liệu có cách nào để tạo một lối tắt hoặc một tệp bó trong Windows sẽ tải PuTTY hoặc một chương trình tương tự, sau đó tắt nó đi lệnh (và có khả năng thoát nếu kết quả là tốt).

Câu trả lời:


14

Sử dụng phiên bản PuTTY dòng lệnh plink.exeđể bắt đầu kết nối SSH đến một máy chủ lựa chọn. Sử dụng công -sshtắc để kết nối với SSH. Với công -mtắc, bạn có thể bao gồm một tệp lệnh:

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

Bạn có thể tải về plink.exetừ đây.

Bước cuối cùng sẽ là tạo một lối tắt bao gồm plink.execác tham số mong muốn.

Kiểm tra tài liệu Plink để biết các thông số khác nhau: Tài liệu Plink.exe


1
Không cần sử dụng -mchuyển đổi với Plink, vì nó cho phép chỉ định lệnh trực tiếp trên dòng lệnh của nó, xem câu trả lời của tôi .
Martin Prikryl

Tôi đang chọn câu trả lời này vì tôi thích sử dụng -ssh host1liên quan đến putty Profile vsuser@host
FreeSoftwareServers

@FreeSoftwareServers Không có sự khác biệt với PuTTY về mặt này. Bạn có thể làm plink site commandtương tự như với PuTTY (ngoại trừ command). Plink và PuTTY về cơ bản có cùng một bộ các tùy chọn dòng lệnh.
Martin Prikryl

8

Để tự động hóa thực thi lệnh, hãy sử dụng Plink (từ gói PuTTY) , chứ không phải chính PuTTY.

Plink chấp nhận một lệnh trên dòng lệnh của nó:

plink.exe user@host command

Nếu bạn muốn tiếp tục sử dụng PuTTY, bạn có thể sử dụng -mkhóa chuyển để chỉ định tệp lệnh (Plink cũng hỗ trợ -mchuyển đổi).


Khi tôi nói rằng tôi không có mật khẩu, đáng lẽ tôi phải xác định tôi có nghĩa với Auth dựa trên SSH Key, nhưng tôi đoán nó sẽ được giả sử. Tôi không nghĩ rằng nó sẽ hoạt động như vậy, nó sẽ cần các tham số được thêm vào như -i keyhoặc-pw password
FreeSoftwareServers

@FreeSoftwareServers Không có sự khác biệt với PuTTY về mặt này. Bạn có thể làm plink site commandtương tự như với PuTTY (ngoại trừ command). Plink và PuTTY về cơ bản có cùng một bộ các tùy chọn dòng lệnh.
Martin Prikryl

câu trả lời của bạn không bao gồm các tùy chọn sử dụng SSH Key Dựa Auth aka đăng nhập PWDless, trong khi các cờ chính xác tồn tại, tôi đã tìm thấy chúng trong các trang hướng dẫn được đưa vào câu trả lời của MrPowerUsers, tôi hiểu cả hai đều có thể hoạt động nhưng người dùng MrPower trả lời phù hợp với tôi câu hỏi tốt hơn và liên kết các trang người đàn ông là tốt
FreeSoftwareServers

6

Bạn có thể sử dụng cấu hình putty để đạt được điều này.

Tải putty và cấu hình phiên của bạn.

Nhập lệnh từ xa mà bạn muốn chạy ở đây:

Hộp lệnh từ xa Putty

Sau đó, trước khi nhấp vào " Mở ", hãy quay lại tab " Phiên " (ở trên cùng) và lưu cấu hình của bạn.

Bây giờ, tạo một lối tắt đến putty.exe, thêm -loadcờ, ví dụ:

%PATH_TO_PUTTY%\putty.exe -load my_config

Bây giờ, bạn có thể chỉ cần nhấp vào phím tắt và nó sẽ tải phiên của bạn, thực hiện lệnh của bạn.


Trông thật tuyệt, thử nghiệm vào ngày mai, tôi cho rằng tôi sẽ chỉ thực thi một tập lệnh và nó có thể kết thúc phiên dựa trên kết quả của tập lệnh
FreeSoftwareServers

Có, phiên sẽ kết thúc khi lệnh kết thúc. Nếu bạn muốn PuTTY đi loanh quanh một lần (ví dụ: để kiểm tra đầu ra), thì hãy đặt " Đóng cửa sổ khi thoát " trong tab " Phiên ".
Attie

2

Nếu bạn đang sử dụng Windows 10, bạn có thể muốn biết rằng Microsoft được báo cáo có bản beta của OpenSSH (máy khách và máy chủ ):

[Vượt] đi đến quản lý các tính năng tùy chọn, sau đó + Thêm một tính năng khác. Sau đó, bạn có thể cuộn xuống danh sách và tìm các tính năng OpenSSH Client (Beta) và OpenSSH Server (Beta) trong Windows. Ý tưởng chạy một dịch vụ từ xa khác trên Windows có thể khiến bạn nản chí vì vậy chúng tôi không đổ lỗi cho bạn nếu bạn không muốn cài đặt máy chủ.

Sau khi cài đặt, bạn có thể chỉ cần kích hoạt dòng lệnh của mình và sử dụng ứng dụng khách OpenSSH bằng cách gõ ssh theo sau là lệnh như ssh ubuntu@someIP.

Dưới đây là sshhướng dẫn sử dụng lệnh hiện tại (kể từ ngày 28 tháng 11 năm 2017) mà chúng tôi đang nhận được với Windows OpenSSH Client:

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>

Nếu điều này hoạt động, bạn sẽ có thể sử dụng sshnhư bạn trên * Nix:

C:\WINDOWS\system32>ssh user@host "ls -l ~"

Đó là điều thực sự tuyệt vời để biết, nhưng tôi yêu SuperPuTTY. Tôi cũng sẽ theo dõi Windows OpenSSH.
FreeSoftwareServers

Bạn có cần phải có ứng dụng khách ssh trên máy bạn đang điều khiển từ xa không? Tôi hỏi vì một số máy tôi điều khiển từ xa không phải là Windows 10.
Nelda.techspiress 30/07/19

1
@ Nelda.techspiress Bạn chỉ nên cần máy chủ chạy trên máy bạn đăng nhập để và chỉ cần khách hàng trên máy bạn đăng nhập từ. (Tương ứng, nếu bạn đăng nhập vào một máy như một proxy để nhảy vào một máy khác, thì máy giữa đó sẽ cần cả hai.)
Michael - Clay's Clay Shirky 30/07/19

2

Chỉ cần nghĩ rằng tôi đã chèn tập lệnh mà tôi đã thực hiện để hy vọng tiết kiệm cho một số người nghiên cứu cú pháp và trang con người

a) Tệp SingleIP, IP Range hoặc IPList

b) tên tập lệnh để chạy trên IP / phạm vi (tập lệnh loại sh / ksh thực tế)

c) tùy chọn thực hiện quét nmap cho cổng 22 mở (tức là mạng con với một số máy không phải là Linux)

-Muốn tránh IP putty không thể kết nối, tránh tập lệnh có thể tiếp tục đúng

d) tùy chọn chạy lệnh pscp để tự động khóa máy chủ (putty không tự động làm điều này)

Lô này giả định:

1. bạn có gói PuTTY đầy đủ và khóa SSH được cài đặt trong C: \ Program Files \ PuTTY \

2. Các tệp bó / tập lệnh / danh sách IP được cài đặt trong C: \ Chương trình tập tin \ PuTTY \ scripts \

3. Các thư mục làm việc NMAP và PuTTY nằm trong đường dẫn lệnh của bạn

https://www.harmonyhit.com/PuttyBatch.bat

Điều này chủ yếu hữu ích khi có một tập lệnh (chẳng hạn như cập nhật chứng chỉ SSL) trên một loạt các máy

Đây là tập tin hoàn chỉnh:

@ECHO TẮT

rem Bạn phải sửa đổi phần CACHEKEY và SCRIPT để phản ánh vị trí khóa SSH của bạn

đặt IPFILE = IPList_temp.txt
đặt runagain = n
đặt TÙY CHỌN = 1
đặt RANGE =
đặt IP =
đặt SCAN = n
đặt KEYCACHE = n

:LỰA CHỌN
CLS
ECHO (Thư mục làm việc được đặt thành C: \ Chương trình tập tin \ PuTTY \ scripts \)
ECHO. 
ECHO 1. IP đơn
ECHO 2. Tệp danh sách IP
ECHO 3. Phạm vi IP
ECHO.
đặt / p OPTION = "Chọn loại IP:"
NẾU% TÙY CHỌN% == 3 GOTO IPRANGE
NẾU% TÙY CHỌN% == 2 GOTO IPLIST
NẾU% TÙY CHỌN% == 1 GOTO SINGLEIP
echo Vui lòng chọn một tùy chọn hợp lệ
TÙY CHỌN GOTO

:PHẠM VI IP
ECHO Nhập (các) dải IP như trong ví dụ sau. Sử dụng khoảng trắng giữa nhiều phạm vi:
ECHO tức là "10.21.0.15-99 10.21.1.15-100"
đặt / p RANGE = Nhập Phạm vi: 
echo% RANGE%>% IPFILE%
GOTO SCRIPTNAME

: SINGLEIP
đặt / p IP = Nhập IP:
echo% IP%>% IPFILE%
GOTO SCRIPTNAME

: IPLIST
đặt / p IP = Nhập tên tệp IPList:
sao chép / Y% IP %% IPFILE%
GOTO SCRIPTNAME

: SCRIPTNAME
đặt / p SCRIPT = Nhập tên tập lệnh:
nếu không tồn tại% SCRIPT% (
tên tập tin echo không tồn tại!
GOTO SCRIPTNAME)

ECHO.
set / p SCAN = Quét Nmap trước? (khuyên dùng):
nếu% QUÉT% == n GOTO: RUNCACHE

rem Kiểm tra xem loại IP có phải là "phạm vi" không vì nmap không thể đọc phạm vi IP từ tệp và phải được nhập trực tiếp trong lệnh nmap
NẾU% TÙY CHỌN% == 3 GOTO NMAPRANGE 
: NMAP
echo IP quét cho cổng 22 mở ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Up> nmap_temp.txt
GOTO SAU

: NMAPRANGE
echo IP quét cho cổng 22 mở ...
nmap --open -n -p22% RANGE% -oG - | findstr / E Up> nmap_temp.txt

: SAU
tiếng vang
định dạng rem nmap là không chính xác, sau đây loại bỏ thông tin bổ sung
for / f "tokens = 2" %% A trong (nmap_temp.txt) thực hiện echo %% A >> nmap_temp2.txt
rem xóa không gian ẩn ở cuối IP (yêu cầu "thay thế" trong thư mục tệp bó)
gõ "nmap_temp2.txt" | thay thế "" "">% IPFILE%

: CHẠY
đặt / p KEYCACHE = Quét và lưu trữ khóa SSH (y / n)?
nếu% KEYCACHE% == n GOTO SCRIPT

: TIẾNG ANH
rem Chạy qua tất cả các IP để lưu trữ Khóa máy chủ SSH nếu chưa được lưu vào bộ đệm
for / F "tokens = *" %% A in (% IPFILE%) do (echo y | "C: \ Program Files \ PuTTY \ pscp.exe" -l root -i "C: \ Chương trình tập tin \ PuTTY \ SSH .ppk "-touch %% A: / tmp / test)

:KỊCH BẢN
for / F "tokens = 1" %% A trong (% IPFILE%) do ("C: \ Chương trình tập tin \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Tệp chương trình \ PuTTY \ SSH.ppk "-m" C: \ Tệp chương trình \ PuTTY \ scripts \% SCRIPT% ")
nếu tồn tại nmap_temp.txt (del nmap_temp.txt)
nếu tồn tại nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Nhấn Enter để kết thúc hoặc y để chạy lại"
nếu% runagain% == y TÙY CHỌN GOTO

1
Liên kết chỉ có câu trả lời được tán thành, nếu trang web của bạn bị sập thì sao? Nếu bạn muốn đóng góp, xin vui lòng chia sẻ kịch bản ở đây. Bạn có thể đăng một nguồn / liên kết đến trang web cùng với mã ở đây, nhưng câu trả lời nên được khép kín và không yêu cầu các liên kết sau.
FreeSoftwareServers

1
nội dung hàng loạt đã được dán
Todd Porter

Không "autocache" một khóa máy chủ. Xác minh khóa máy chủ là một phần không thể thiếu trong việc bảo mật phiên SSH của bạn. PuTTY (và các công cụ của nó) không yêu cầu bạn cung cấp khóa máy chủ để giải trí hoặc quấy rối bạn. Nó có một lý do! + Bạn cũng không nên lưu trữ dữ liệu người dùng ( SSH.ppk) to thư mục Tập tin Chương trình tập tin.
Martin Prikryl

bạn có thể giới thiệu cách chạy tập lệnh trên nhiều IP mà không có nó không? a) điều này không có nghĩa đối với máy tính để bàn thông thường, hơn nữa đối với máy chủ quản trị nơi bảo mật là người có quyền truy cập vào máy chủ b) chính xác thì rủi ro bảo mật là gì? Bộ nhớ đệm của máy chủ là tùy chọn và chỉ nên được thực hiện một lần trên phạm vi. Nếu bạn chạy lại tập lệnh mà không lưu bộ đệm, bạn vẫn sẽ thấy và lưu trữ các thay đổi của khóa và tập lệnh sẽ không tiếp tục ...
Todd Porter

...... Đồng ý về chìa khóa của bạn. Tôi chỉ đến một thư mục được chia sẻ trên NAS của chúng tôi, nơi thư mục được chia sẻ tồn tại mà chỉ tôi mới có quyền truy cập. Tôi vừa chọn một đường dẫn vì những người dùng khác sẽ khác
Todd Porter

1

Bạn cũng có thể xem phần mềm như mRemoteNG, MOBAxTerm hoặc SecureCRT sẽ quản lý các kết nối SSH cho bạn, điều này cũng liên kết với các phiên PuTTY đã lưu để bạn có thể áp dụng mẫu cho phiên.


0

Đây là "CMD" cuối cùng mà tôi có thể lưu trên Máy chủ tệp của mình và tạo một lối tắt trên Bàn làm việc.

::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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.