セッションを開いてコマンドを実行するバッチファイルまたはPuTTY(ssh)へのショートカットを作成する


10

SSHセッションを開いて同じ単一のコマンドを実行することがよくあります。パスワードを入力せずにログインするようにすべて設定しました(SSHキーベースの認証を使用)。WindowsでPuTTYまたは同様のプログラムをロードして起動するショートカットまたはバッチファイルを作成する方法があるかどうか疑問に思いました。コマンド(そして結果が良ければ終了するでしょう)。

回答:


14

コマンドラインのPuTTYバージョンplink.exeを使用して、選択したホストへのSSH接続を開始します。使用する-sshSSHで接続するようにスイッチを。では-mスイッチコマンド・ファイルを含めることができます。

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

こちらplink.exeからダウンロードできます

最後のステップはplink.exe、必要なパラメータを含むショートカットを作成することです。

その他のさまざまなパラメーターについては、Plinkのドキュメントを確認してください 。Plink.exeのドキュメント


1
-mコマンドラインで直接コマンドを指定できるので、Plinkでスイッチを使用する必要はありません。私の回答を参照しください。
Martin Prikryl 2017

私が使用して好むように私はこの答えを選択しています-ssh host1対パテプロフィールに関するものuser@host
FreeSoftwareServers

@FreeSoftwareServersこの点でPuTTYに違いはありません。plink site commandPuTTYと同じ方法で実行できます(を除くcommand)。PlinkとPuTTYには、基本的に同じコマンドラインオプションのセットがあります。
Martin Prikryl 2017

8

コマンドの実行を自動化するには、PuTTY自体ではなく、Plink(PuTTYパッケージから)を使用します。

Plinkはコマンドラインでコマンドを受け入れます。

plink.exe user@host command

PuTTYを使い続けたい場合は、-mスイッチを使用してコマンドファイルを指定できます(Plinkは-mスイッチもサポートしています)。


パスワードがないと言ったとき、SSH鍵ベースの認証を意味することを指定する必要がありましたが、想定されていると考えました。私はそれがように追加のパラメータ必要があるだろう、それがあるとして、これは働くだろうとは思いません-i key-pw password
FreeSoftwareServers

@FreeSoftwareServersこの点でPuTTYに違いはありません。plink site commandPuTTYと同じ方法で実行できます(を除くcommand)。PlinkとPuTTYには、基本的に同じコマンドラインオプションのセットがあります。
Martin Prikryl 2017

あなたの回答には、SSHキーベースの認証、つまりPWDlessログインを使用するオプションが含まれていませんでしたが、正しいフラグが存在しますが、MrPowerUsersの回答に含まれているplinkのマニュアルページでそれらを見つけました。質問をよくし、manページもリンクした
FreeSoftwareServers 2017

6

これを実現するには、パテ構成を使用できます。

パテをロードし、セッションを構成します。

ここで実行するリモートコマンドを入力します。

パテリモートコマンドボックス

次に、[ 開く ]をクリックする前に、[ セッション ]タブ(上部)に戻り、構成を保存します。

次に、へのショートカットを作成しputty.exe-loadフラグを追加します。次に例を示します。

%PATH_TO_PUTTY%\putty.exe -load my_config

これで、ショートカットをクリックするだけでセッションが読み込まれ、コマンドが実行されます。


明日は
素晴らしく

はい、コマンドが終了するとセッションは終了します。行われた後、あなたがたむろするの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 2017

リモート化するマシンにsshクライアントが必要ですか?私がリモートに接続しているマシンの一部がWindows 10でないため、私は尋ねます
Nelda.techspiress

1
Nelda.techspiress @あなただけがログインサーバがマシン上で実行されている必要があるののみログインするマシンにクライアントを必要とするから。(それに対応して、あるマシンにプロキシとしてログインして別のマシンにホップすると、その中間のマシンには両方が必要になります。)
Michael-Where's Clay Shirky

2

私が作成したスクリプトを挿入して、シンタックスとマニュアルページの調査に費やす時間を節約したいと思ったところです。

a)SingleIP、IP Range、または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証明書の更新など)を使用する場合に役立ちます。

ここに完全なバッチファイルがあります:

@エコーオフ

rem SSHキーの場所を反映するようにCACHEKEYおよびSCRIPTセクションを変更する必要があります

IPFILE = IPList_temp.txtを設定します
runagain = nを設定
OPTION = 1に設定
RANGE =を設定
IP =を設定
SCAN = nを設定
KEYCACHE = nを設定します

:オプション
CLS
ECHO(作業ディレクトリはC:\ Program Files \ PuTTY \ scripts \に設定されています)
エコー。 
ECHO 1.単一IP
ECHO 2. IPリストファイル
ECHO 3. IP範囲
エコー。
セット/ p OPTION = "IPタイプを選択してください:"
もし%OPTION%== 3ならGOTO IPRANGE
IF%OPTION%== 2 GOTO IPLISTの場合
%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 =範囲を入力: 
エコー%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
GOTO AFTERNMAP

:NMAPRANGE
ポート22のエコースキャンIPが開いています...
nmap --open -n -p22%RANGE%-oG-| findstr / E Up> nmap_temp.txt

:AFTERNMAP
エコー完了
rem nmapのフォーマットが正しくありません。次は余分な情報を削除します
/ f "tokens = 2"の場合、(nmap_temp.txt)の%% Aはエコー%% A >> nmap_temp2.​​txt
remはIPの最後にある隠しスペースを削除します(「repl」がバッチファイルディレクトリにある必要があります)
「nmap_temp2.​​txt」と入力します| repl "" "">%IPFILE%

:RUNCACHE
set / p KEYCACHE = SSHキーをスキャンしてキャッシュしますか(y / n)?
%KEYCACHE%== n GOTO SCRIPTの場合

:キャッシュキー
remまだキャッシュされていない場合は、すべてのIPを実行してSSHホストキーをキャッシュします。
/ F "tokens = *" %% 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)

:脚本
/ 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を押して再実行します"
%runagain%== y GOTO OPTIONの場合

1
リンクのみの回答は眉をひそめていますが、サイトがダウンした場合はどうなりますか?貢献したい場合は、ここでスクリプトを共有してください。ここにコードとともにサイトへのソース/リンクを投稿してください。回答は自己完結型であり、リンクをたどる必要はありません。
FreeSoftwareServers

1
バッチコンテンツの貼り付け
Todd Porter

ホストキーを「自動キャッシュ」しないでください。ホストキーの確認は、SSHセッションのセキュリティ保護に不可欠です。PuTTY(およびそのツール)は、楽しみや嫌がらせのためにホストキーを要求しません。それには理由があります!+また、ユーザーデータ(保存しないでくださいSSH.ppk、スクリプト) to プログラムfiles`をフォルダを。
マーティンPrikryl

スクリプトなしで複数のIPでスクリプトを実行する方法を推奨できますか?a)これは、一般的なユーザーのデスクトップではなく、サーバーにアクセスできるユーザーのセキュリティが高い管理サーバーの場合に適しています。b)セキュリティリスクとは正確に何ですか。ホストキーのキャッシュはオプションであり、範囲全体で1回だけ実行する必要があります。キーをキャッシュせずにスクリプトを再度実行すると、キーの変更が表示され、ホストされ、スクリプトは続行されません...
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.