Bir oturum açan ve bir komut çalıştıran bir toplu iş dosyası veya PuTTY (ssh) kısayolu oluşturma


10

Kendimi sık sık aynı tek komutu çalıştırmak için bir SSH oturumu açarken buluyorum. Parola girmeden oturum açmak için her şeyim var (SSH Anahtar Tabanlı Kimlik Doğrulama yoluyla), bu yüzden Windows'ta PuTTY veya benzer bir programı yükleyecek bir kısayol veya toplu iş dosyası oluşturmanın bir yolu olup olmadığını merak ettim, komutu (ve sonuç iyi ise büyük olasılıkla çıkılır).

Yanıtlar:


14

plink.exeTercih edilen bir ana bilgisayara SSH bağlantısı başlatmak için PuTTY komut satırı sürümünü kullanın. -sshSSH ile bağlanmak için anahtarı kullanın . İle -manahtar bir komut dosyası içerebilir:

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

Sen indirebilirsiniz plink.exedan buraya.

Son adım plink.exe, istenen parametrelerle birlikte bir kısayol oluşturmak olacaktır .

Diğer çeşitli parametreler için Plink belgelerine bakın : Plink.exe belgeleri


1
-mKomutu doğrudan komut satırında belirtmesine izin verdiği için Plink ile anahtarı kullanmanıza gerek yok , cevabımı görün .
Martin Prikryl

Ben -ssh host1macun Profili vs ile ilgili kullanmayı tercih olarak bu cevabı user@host
seçiyorum

@FreeSoftwareServers Bu bakımdan PuTTY için bir fark yok. plink site commandPuTTY ile aynı şekilde yapabilirsiniz (hariç command). Plink ve PuTTY temel olarak aynı komut satırı seçeneklerine sahiptir.
Martin Prikryl

8

Bir komut yürütmesini otomatikleştirmek için PuTTY'nin kendisini değil Plink'i (PuTTY paketinden) kullanın .

Plink komut satırında bir komutu kabul eder:

plink.exe user@host command

PuTTY kullanmaya devam etmek istiyorsanız, bir komut dosyası belirtmek için -mswitch'i kullanabilirsiniz (Plink de -manahtarı destekler ).


Parolam olmadığını söylediğimde, SSH Anahtar Tabanlı Yetkilendirme ile kastettiğimi belirtmeliydim, ama bunun kabul edileceğini düşündüm. Bunun olduğu gibi çalışacağını sanmıyorum, -i keyveya gibi parametreler gerekirdi-pw password
FreeSoftwareServers

@FreeSoftwareServers Bu bakımdan PuTTY için bir fark yok. plink site commandPuTTY ile aynı şekilde yapabilirsiniz (hariç command). Plink ve PuTTY temel olarak aynı komut satırı seçeneklerine sahiptir.
Martin Prikryl

Cevabınız SSH Anahtar Tabanlı Kimlik Doğrulama aka PWDless giriş kullanma seçeneklerini içermiyordu, doğru bayraklar varken, onları MrPowerUsers yanıtında bulunan plink için man sayfalarında buldum, her ikisinin de çalışabileceğini anlıyorum ama MrPower kullanıcıları benim soru daha iyi ve adam sayfaları da bağlantılı
FreeSoftwareServers

6

Bunu başarmak için macun yapılandırmalarını kullanabilirsiniz.

Macun yükleyin ve oturumunuzu yapılandırın.

Buraya çalıştırmak istediğiniz uzak komutu girin:

Macun uzak komut kutusu

Ardından, " " ı tıklamadan önce " Oturum " sekmesine (üstte) dönün ve yapılandırmanızı kaydedin.

Şimdi, bayrağı putty.exeekleyerek bir kısayol oluşturun , -loadörneğin:

%PATH_TO_PUTTY%\putty.exe -load my_config

Şimdi, kısayolu tıklamanız yeterlidir ve oturumunuzu yükler, komutunuzu uygular.


Yarın harika, kötü test görünüyor, ben sadece bir komut dosyası yürütecek varsayalım ve komut dosyası sonuçlarına göre oturumu sonlandırabilirsiniz
FreeSoftwareServers

Evet, komut sona erdiğinde oturum sona erer. PuTTY'nin bir kez bittiğinde takılmasını istiyorsanız (örneğin: çıkışı incelemek için), " Oturum " sekmesinde " Çıkışta pencereyi kapat " seçeneğini ayarlayın .
Attie

2

Windows 10 kullanıyorsanız, Microsoft'un bildirilen bir OpenSSH (istemci ve sunucu ) beta sürümüne sahip olduğunu bilmek isteyebilirsiniz :

[…] “İsteğe Bağlı Özellikleri Yönetin” ve sonra + “Özellik ekle” ye gidin. Daha sonra listeyi aşağı kaydırabilir ve Windows'ta OpenSSH İstemcisi (Beta) ve OpenSSH Sunucusu (Beta) özelliklerini bulabilirsiniz. Windows'ta başka bir uzaktan hizmet çalıştırma fikri göz korkutucu olabilir, bu nedenle sunucuyu kurmak istemiyorsanız sizi suçlamayız.

Kurulduktan sonra, komut satırınızı çalıştırabilir ve ssh ve ardından komutunu yazarak OpenSSH istemcisini kullanabilirsiniz ssh ubuntu@someIP.

sshWindows OpenSSH İstemcisi ile aldığımız geçerli (28 Kasım 2017 itibariyle) komut kullanım kılavuzu:

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>

Bu işe yararsa, sshbir * Nix'da olduğu gibi kullanabilmeniz gerekir :

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

Bunu bilmek gerçekten harika, ama SuperPuTTY'yi seviyorum. Windows OpenSSH'yi de takip edeceğim.
FreeSoftwareServers

İçinde bulunduğunuz makinede ssh istemcisinin olması gerekiyor mu? Soruyorum çünkü uzaktan kumanda ettiğim bazı makineler Windows 10 değil.
Nelda.techspiress

1
Nelda.techspiress @ Yalnızca giriş sunucu makinelerde çalışan gerektiğinde etmek ve sadece giriş makinelerde müşteri ihtiyaç dan. (Buna uygun olarak, bir makineye başka bir makineye atlamak için proxy olarak giriş yaparsanız, bu orta makinenin her ikisine de ihtiyacı olacaktır.)
Michael - Clay Shirky

2

Sadece umarım bazı insanlara saatlerce söz dizimi ve adam sayfası araştırması kaydetmek için yaptığım senaryoyu ekleyeceğimi düşündüm

a) SingleIP, IP Aralığı veya IPList dosyası

b) IP / aralıkta çalıştırılacak komut dosyası adı (gerçek unix sh / ksh türü komut dosyası)

c) isteğe bağlı olarak bağlantı noktası 22 için nmap taraması yapın (örneğin, bazı Linux olmayan makinelerde alt ağ)

-IPs macunun bağlanamamasını önlemek, betiğin düzgün bir şekilde devam etmesini önlemek

d) isteğe bağlı olarak ana makine anahtarını otomatik olarak önbelleğe almak için pscp komutunu çalıştırın (macun bunu otomatik olarak yapmaz)

Bu parti şunları varsaymaktadır:

1. tam PuTTY paketi ve SSH anahtarı yüklü C: \ Program Files \ PuTTY \

2. C / \ Program Files \ PuTTY \ scripts \ dizinine yüklenen toplu iş / komut dosyaları / IPlist dosyaları

3. NMAP ve PuTTY çalışma dizinleri komut yolunuzda

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

Bu genellikle bir dizi makinede tek bir komut dosyasının (SSL sertifikasının güncellenmesi gibi) olması için kullanışlıdır

İşte tam toplu iş dosyası:

@EKO KAPALI

rem SSH anahtar konumunuzu yansıtacak şekilde CACHEKEY ve SCRIPT bölümünü değiştirmeniz gerekir

set IPFILE = IPList_temp.txt
kaçış ayarla = n
SEÇENEK ayarla = 1
RANGE = ayarlayın
IP ayarla =
SCAN = n olarak ayarla
KEYCACHE = n olarak ayarla

: SEÇENEĞİ
CLS
ECHO (Çalışma dizini C: \ Program Files \ PuTTY \ scripts \ olarak ayarlandı)
EKO. 
ECHO 1. Tek IP
ECHO 2. IP liste dosyası
ECHO 3. IP Aralığı
EKO.
set / p OPTION = "IP türünü seçin:"
% OPTION% == 3 GOTO IPRANGE EĞER
% OPTION% == 2 GOTO IPLIST EĞER
EĞER% OPTION% == 1 GOTO SINGLEIP
echo Lütfen geçerli bir seçenek seçin
GOTO SEÇENEKLERİ

:IP ARALIĞI
ECHO Aşağıdaki aralıktaki gibi IP aralıklarını girin. Birden çok aralık arasında boşluk kullanın:
ECHO yani "10.21.0.15-99 10.21.1.15-100"
set / p RANGE = Aralık Girin: 
echo% RANGE%>% IPFILE%
GOTO SCRIPTNAME

: SINGLEIP
set / p IP = IP Gir:
echo% IP%>% IPFILE%
GOTO SCRIPTNAME

: IPLIST
set / p IP = IPList dosya adını girin:
kopya / Y% IP%% IPFILE%
GOTO SCRIPTNAME

: komut dosyasının
set / p SCRIPT = Komut dosyası adını girin:
yoksa% SCRIPT% (
yankı dosya adı mevcut değil!
GOTO SCRIPTNAME)

EKO.
set / p SCAN = Önce Nmap taraması yapıyor mu? (önerilen):
eğer% SCAN% == n GOTO: RUNCACHE

rem IP türünün "aralık" olup olmadığını kontrol edin, çünkü nmap dosyadan bir IP aralığı okuyamaz ve doğrudan nmap komutunda yazılmalıdır
% OPTION% == 3 GOTO NMAPRANGE EĞER 
: NMAP
echo Bağlantı noktası 22 için IP tarama açık ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Yukarı> nmap_temp.txt
GOTO AFTERNMAP

: NMAPRANGE
echo Bağlantı noktası 22 için IP tarama açık ...
nmap --open -n -p22% ARALIK% -oG - | findstr / E Yukarı> nmap_temp.txt

: AFTERNMAP
echo YAPILDI
rem nmap biçimlendirmesi doğru değil, aşağıdaki ek bilgileri kaldırır
(nmap_temp.txt) içindeki / f "belirteçleri = 2" %% A için %% A >> nmap_temp2.txt yazın
rem IP'nin sonundaki gizli alanı kaldır (toplu iş dizininde "repl" olmasını gerektirir)
"nmap_temp2.txt" yazın | yanıt "" "">% IPFILE%

: RUNCACHE
set / p KEYCACHE = SSH anahtarını tara ve önbelleğe al (y / n)?
% KEYCACHE% == n GOTO SCRIPT ise

: CACHEKEY
rem Önceden önbelleğe alınmamışsa SSH Ana Bilgisayar Anahtarını önbelleğe almak için tüm IP'leri çalıştırın
/ F "tokens = *" (% IPFILE%) içindeki %% A için (echo y | "C: \ Program Files \ PuTTY \ pscp.exe" -l root -i "C: \ Program Files \ PuTTY \ SSH .ppk "-touch %% A: / tmp / test)

:SENARYO
/% "tokens = 1" (% IPFILE%) içindeki %% A için ("C: \ Program Files \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Program Dosyaları \ PuTTY \ SSH.ppk "-m" C: \ Program Dosyaları \ PuTTY \ scripts \% SCRIPT% ")
varsa nmap_temp.txt (del nmap_temp.txt)
varsa nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Bitirmek için Enter tuşuna, tekrar çalıştırmak için y tuşuna basın"
% runagain% == y GOTO SEÇENEĞİ

1
Sadece bağlantı cevapları kaşlarını çattı, ya siteniz çökerse? Katkıda bulunmak istiyorsanız, lütfen betiği burada paylaşın. Buradaki kodla birlikte siteye bir kaynak / bağlantı gönderebilirsiniz, ancak yanıtlar kendi kendine yetmeli ve aşağıdaki bağlantıları gerektirmemelidir.
FreeSoftwareServers

1
toplu içerik yapıştırıldı
Todd Porter

Yapma "autocache" bir konak anahtarı. Ana bilgisayar anahtarını doğrulamak, SSH oturumunuzu güvenli hale getirmenin ayrılmaz bir parçasıdır. PuTTY (ve araçları) eğlenmek veya taciz etmek için ana bilgisayar anahtarını istemez. Bunun bir nedeni var! + Ayrıca kullanıcı verilerini ( SSH.ppkve komut dosyası ) to Program Dosyaları` klasörünü de saklamamalısınız.
Martin Prikryl

bir komut dosyasını birden fazla IP'de olmadan nasıl çalıştıracağınızı önerebilir misiniz? a) bu tipik bir kullanıcı masaüstü için değil, daha çok güvenliğin sunucuya erişimi olan bir yönetici sunucusu için b) Güvenlik riski tam olarak nedir? Ana makine anahtarının önbelleğe alınması isteğe bağlıdır ve aralıkta yalnızca bir kez yapılmalıdır. Komut dosyasını önbelleğe almadan yeniden çalıştırırsanız, anahtar değişiklikleri görmeye ve barındırmaya devam edersiniz ve komut dosyası devam etmez ...
Todd Porter

...... Anahtar konusunda anlaştınız. NAS'ımızda paylaşılan klasörün yaşadığı paylaşılan bir klasöre işaret ediyorum, sadece erişebildiğim. Diğer kullanıcılar farklı olacağından yeni bir yol seçtim
Todd Porter

1

SSH bağlantılarınızı sizin için yönetecek mRemoteNG, MOBAxTerm veya SecureCRT gibi yazılımlara da bakabilirsiniz, bu aynı zamanda kaydedilmiş PuTTY oturumlarıyla da bağlantı kurarak oturuma bir şablon uygulayabilirsiniz.


0

Bu, sadece Dosya Sunucuma kaydedip Masaüstümde bir kısayol oluşturabildiğim son "CMD" dir.

::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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.