SSHセッションを開いて同じ単一のコマンドを実行することがよくあります。パスワードを入力せずにログインするためのすべての設定(SSHキーベースの認証を介して)があるので、WindowsでPuTTYまたは同様のプログラムをロードして起動するショートカットまたはバッチファイルを作成する方法があるかどうか疑問に思いましたコマンド(結果が良ければ終了する可能性が高い)。
コマンドラインPuTTYバージョンplink.exe
を使用して、選択したホストへのSSH接続を開始します。 SSHで接続するには、-ssh
スイッチを使用します。 -m
スイッチを使用すると、コマンドファイルを含めることができます。
plink.exe -ssh Host1 -m C:\path\to\commands.txt
plink.exe
は こちらからダウンロードできます。
最後のステップは、必要なパラメータを含むplink.exe
を含むショートカットを作成することです。
Plinkのドキュメントで他のさまざまなパラメーターを確認してください: Plink.exeのドキュメント
コマンドの実行を自動化するには、PuTTY自体ではなく Plink(PuTTYパッケージから) を使用します。
Plinkはコマンドラインでコマンドを受け入れます。
plink.exe user@Host command
PuTTYを使い続けたい場合は、 -m
スイッチ を使用してコマンドファイルを指定できます(Plinkは-m
スイッチもサポートしています)。
作成したスクリプトを挿入して、シンタックスとマニュアルページの調査に費やす時間を節約したいと思ったところです。
a)SingleIP、IP範囲、またはIPListファイル
b)IP /範囲で実行するスクリプト名(実際のUNIX sh/kshタイプのスクリプト)
c)オプションで、ポート22を開くためにnmapスキャンを実行します(つまり、一部の非Linuxマシンのサブネット)
-PuTTYが接続できないIPを回避したい、スクリプトが正しく続行できないようにする
d)オプションでpscpコマンドを実行してホストキーを自動キャッシュします(PuTTYはこれを自動的に行いません)
このバッチは、次のことを前提としています。
1.完全なPuTTYパッケージとSSHキーがC:\ Program Files\PuTTY\ にインストールされている
2. C:\ Program Files\PuTTY\scripts\ にインストールされたバッチ/スクリプト/ IPlistファイル
3. NMAPとPuTTYの作業ディレクトリがコマンドパスにある
https://www.harmonyhit.com/PuttyBatch.bat
これは主に、さまざまなマシンで単一のスクリプト(SSL証明書の更新など)を使用する場合に役立ちます。
ここに完全なバッチファイルがあります:
@ECHO OFF rem CACHEKEYおよびSCRIPTセクションを変更して、SSHキーの場所を反映する必要があります set IPFILE = IPList_temp.txt set runagain = n set OPTION = 1 set RANGE = set IP = set SCAN = n set KEYCACHE = n :OPTION CLS ECHO(作業ディレクトリはC:\ Program Files\PuTTY\scripts \に設定されています) ECHO。 ECHO 1.単一IP ECHO 2. IPリストファイル ECHO 3. IP範囲 ECHO。 set/p OPTION = "Choose IPタイプ: " IF%OPTION%== 3 GOTO IPRANGE IF%OPTION%== 2 GOTO IPLIST IF%OPTION%== 1 GOTO SINGLEIP echo有効なオプションを選択してください GOTO OPTION :IPRANGE ECHO次の例のようにIP範囲を入力します。複数の範囲の間にスペースを使用します。 ECHO ie "10.21.0.15-99 10.21.1.15-100" set/p RANGE = Enter Range: echo%RANGE%>% IPFILE% GOTO SCRIPTNAME :SINGLEIP set/p IP = Enter IP: echo%IP%>%IPFILE% GOTO SCRIPTNAME :IPLIST set/p IP = IPListファイル名を入力: copy/Y%IP%%IPFILE% GOTO SCRIPTNAME :SCRIPTNAME set/p SCRIPT =スクリプト名を入力: 存在しない場合%SCRIPT%( エコーファイル名が存在しません! GOTO SCRIPTNAME) ECHO。 set/p SCAN = Do Nmap scan first?(recommended): if%SCAN%== n GOTO:RUNCACHE rem nmapはファイルからIP範囲を読み取れず、nmapコマンドで直接入力する必要があるため、IPタイプが「範囲」であるかどうかを確認します IF%OPTION%== 3 GOTO NMAPRANGE :NMAP echo Scanning IPs for port 22 open ... nmap --open -n -p22 -iL %IPFILE%-oG-| findstr/E Up> nmap_temp.txt GOTO AF TERNMAP :NMAPRANGE echo Scanning IPs for port 22 open ... nmap --open -n -p22%RANGE%-oG-| findstr/E Up> nmap_temp.txt :AFTERNMAP echo DONE rem nmapのフォーマットが正しくないため、次のように余分な情報が削除されます /f "tokens = 2"(nmap_temp.txt)の%% Aはエコー%% A >> nmap_temp2.txt remでIPの終わりにある隠しスペースを削除します( "repl"がバッチファイルディレクトリにある必要があります) ) type "nmap_temp2.txt" | repl "" "">%IPFILE% :RUNCACHE set/p KEYCACHE = SSHキーをスキャンしてキャッシュします(y/n)? if%KEYCACHE %== n GOTO SCRIPT :CACHEKEY rem/F "tokens = *のキャッシュがない場合は、すべてのIPを実行してSSHホストキーをキャッシュします "%% A in(%IPFILE%)do(echo y |" C:\ Program Files\PuTTY\pscp.exe "-l root -i" C:\ Program Files\PuTTY\SSH.ppk "-touch %% A:/ tmp/test) :SCRIPT for/F "tokens = 1" %% A in(%IPFILE%)do( "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を押して再実行します" if%runagain%== y GOTO OPTION
Windows 10を使用している場合、Microsoft 伝えられるところ がOpenSSH(クライアントおよびサーバーのベータ版を持っている)を知っていることに興味があるかもしれません。 )):
[…]「オプション機能の管理」、「機能の追加」の順に進みます。次に、リストを下にスクロールして、WindowsのOpenSSHクライアント(ベータ)およびOpenSSHサーバー(ベータ)機能を見つけます。 Windowsで別のリモートサービスを実行するという考えは困難な場合があるので、サーバーをインストールしたくない場合でも、私たちはあなたを責めません。
インストールしたら、コマンドラインを起動して、sshに続けて
ssh ubuntu@someIP
などのコマンドを入力することで、OpenSSHクライアントを使用できます。Windows OpenSSHクライアントで取得している現在の(2017年11月28日の)
ssh
コマンドの使用ガイドは次のとおりです。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>
これが機能する場合は、* Nixと同じようにssh
を使用できます。
C:\WINDOWS\system32>ssh user@Host "ls -l ~"
SSH接続を管理するmRemoteNG、MOBAxTerm、SecureCRTなどのソフトウェアを確認することもできます。これは保存されたPuTTYセッションとリンクしているため、テンプレートをセッションに適用できます。
これは、ファイルサーバーに保存してデスクトップにショートカットを作成できる最後の「CMD」です。
::FreeSoftwareServers
::Automated Opening of SSH Tunnel & Execute CMD on Remote Host
::https://superuser.com/questions/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