ssh2 ログイン
2020/06/21 18:06
ssh2 ログイン
ログインを自動化するマクロは ログイン自動化 にまとめてありますので、そちらを参照してください。また、解説も付けたものもあります。
このページでは、目的や仕様別にいろいろ作ってみたものを配置します。
サンプルマクロの仕様
公開鍵を登録した Linux サーバに対し、自身がもつ秘密鍵でアクセスします。鍵は、特に言及しない限りパスフレーズを指定しているものとします。
本手順書での格納先
本手順で利用する各ファイルの格納先です。環境に合わせて読み替えてください。
対象ファイル | 格納先 | 備考 |
---|---|---|
公開鍵 | "~/.ssh/authorized_keys" | アクセス前に登録しておきます。 |
秘密鍵 | "C:\Users\Windows\Downloads\key\id_rsa" |
マクロサンプル
基本形
パスフレーズは保存せず、毎回入力する形式のマクロです。hostname = 'example.jp' username = 'username' keyfile = "C:\Users\Windows\Downloads\key\id_rsa" passwordbox 'Enter password' 'Login' sprintf2 msg '%s /ssh2 /auth=publickey /user=%s /passwd="%s" /keyfile=%s' hostname username inputstr keyfile ; 念のため、パスフレーズを表示させない処置 connect '/DS' ; 接続処理 connect msg
サーバ側の待ち受けポート指定時
ssh の待ち受けポートを変更した場合、アクセス時にも適切に指定する必要があります。hostname = 'example.jp' portnumb = 22 username = 'username' keyfile = "C:\Users\Windows\Downloads\key\id_rsa" passwordbox 'Enter password' 'Login' sprintf2 msg '%s:%d /ssh2 /auth=publickey /user=%s /passwd="%s" /keyfile=%s' hostname portnumb username inputstr keyfile ; 念のため、パスフレーズを表示させない処置 connect '/DS' ; 接続処理 connect msg
設定ファイル (.ini ファイル) を指定するもの
.ttl ファイルと同じ場所に、hostname と同じ名前で .ini ファイルを格納している場合。hostname = 'example.jp' username = 'username' tcpport = '22' sprintf2 ifile "%s.INI" hostname getdir mdir makepath inipath mdir ifile sprintf2 msg "Enter password for user %s" username passwordbox msg 'Get password' password = inputstr sprintf2 msg "%s:%s /ssh /auth=password /user=%s /passwd=%s /F=%s" hostname tcpport username password inipath ; 念のため、パスフレーズを表示させない処置 connect '/DS' ; 接続処理 connect msg
基本形(パスフレーズなし)
AWS で何も考えずに鍵ペアを作った場合、パスフレーズが設定されていないようです。外部から EC2 インスタンスにログインする場合、極端にシンプルです。
hostname = 'example.jp' username = 'username' keyfile = "C:\Users\Windows\Downloads\key\id_rsa" sprintf2 msg "%s /ssh2 /auth=publickey /user=%s /keyfile=%s" hostname username keyfile ; 念のため、パスフレーズを表示させない処置 connect '/DS' ; 接続処理 connect msg
アクセス先ホストをリスト選択するもの
0~4 の 5 つ分、指定する場合です。strdim axSSH 5 axSSH[0] = '192.168.0.10' axSSH[1] = '192.168.0.11' axSSH[2] = '192.168.0.12' axSSH[3] = '192.168.0.13' axSSH[4] = '192.168.0.14' portnumb = 22 username = 'username' keyfile = "C:\Users\Windows\Downloads\key\id_rsa" ;; アクセス先選択 sprintf2 msg "アクセス先を選択してください。" sprintf2 title "種別選択" listbox msg title axSSH hostname = axSSH[result] passwordbox 'Enter password' 'Login' sprintf2 msg '%s:%d /ssh2 /auth=publickey /user=%s /passwd="%s" /keyfile=%s' hostname portnumb username inputstr keyfile ; 念のため、パスフレーズを表示させない処置 connect '/DS' ; 接続処理 connect msg
アクセス先ホストをリスト選択するもの(パスフレーズなし)
パスフレーズを指定しない条件で、0~4 の 5 つ指定する場合です。strdim axSSH 5 axSSH[0] = '192.168.0.10' axSSH[1] = '192.168.0.11' axSSH[2] = '192.168.0.12' axSSH[3] = '192.168.0.13' axSSH[4] = '192.168.0.14' portnumb = 22 username = 'username' keyfile = "C:\Users\Windows\Downloads\key\id_rsa" ;; アクセス先選択 sprintf2 msg "アクセス先を選択してください。" sprintf2 title "種別選択" listbox msg title axSSH hostname = axSSH[result] sprintf2 msg "%s:%d /ssh2 /auth=publickey /user=%s /keyfile=%s" hostname portnumb username keyfile ; 念のため、パスフレーズを表示させない処置 connect '/DS' ; 接続処理 connect msg
ポート番号を選択するもの
指定の対象ホストに対し、指定ユーザでポートだけ指定する条件で、0~4 の 5 つ指定する場合です。hostname = '192.168.0.10' username = 'username' strdim axPORT 5 axPORT[0] = '22' axPORT[1] = '23' axPORT[2] = '1022' axPORT[3] = '80' axPORT[4] = '8080' ;; アクセス先ポート選択 sprintf2 msg "アクセス先ポートを選択してください。" sprintf2 title "%s: ポート選択" hostname listbox msg title axPORT portnumb = axPORT[result] passwordbox 'Enter password' 'Login' Password = inputstr sprintf2 msg '%s:%s /ssh2 /auth=password /user=%s /passwd="%s"' hostname portnumb username Password ; 念のため、パスフレーズを表示させない処置 connect '/DS' ; 接続処理 connect msg
基本形(パスワードを保存するもの)
基本形に、パスワード保存機能を付与したものです。パスワードを、マクロファイルのカレントディレクトリに 'password.dat' という名前で保存します。
キーとなるパスワード名の構成は、ユーザ名@ホスト名にしてあります。
パスワード自体は暗号化されます。
hostname = 'example.jp' username = 'username' keyfile = "C:\Users\Windows\Downloads\key\id_rsa" sprintf2 pPasswdName "%s@%s" username hostname getpassword 'password.dat' pPasswdName Password sprintf2 msg '%s /ssh2 /auth=publickey /user=%s /passwd="%s" /keyfile=%s' hostname username Password keyfile ; 念のため、パスフレーズを表示させない処置 connect '/DS' ; 接続処理 connect msg
パスワードを削除するもの
ユーザ名@ホスト名という構成の名前で登録したパスワードを削除するものです。定期的にパスワードを変更する運用の場合に必要ですね。
一応、パスワードファイルを変数に入れるように変更しています。
hostname = 'example.jp' username = 'username' pPasswdFile = 'password.dat' sprintf2 pPasswdName "%s@%s" username hostname delpassword pPasswdFile pPasswdName