ログインを自動化するマクロは ログイン自動化 にまとめてありますので、そちらを参照してください。
また、解説も付けたものもあります。
このページでは、目的や仕様別にいろいろ作ってみたものを配置します。
公開鍵を登録した 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
.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