質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

Q&A

解決済

2回答

498閲覧

Teratermマクロで、踏み台を経て目的のサーバーにアクセスしたい

wkbiz

総合スコア154

Tera Term

Tera Termは、TeraTerm Projectが開発する国産のWindows向けターミナルソフト。telnetプロトコルでのリモートホストへの接続やCOMポートのシリアル接続が可能で、マクロが利用できます。

0グッド

0クリップ

投稿2024/09/18 07:31

編集2024/09/18 08:07

実現したいこと

Teratermマクロで、踏み台を経て目的のサーバーにアクセスしたいです。
しかしエラーのため接続ができません。コードが悪いのだと思いますがどこの書き方が悪いのかが掴めず。
ご教授いただけないでしょうか。よろしくお願いします。

ローカルは、192.168.1.2で、踏み台172.16.10.20にアクセス後、目的のサーバー172.16.30.50です。
踏み台用のpublickeyは、ローカル192.168.1.2上にあります。
目的のサーバー用のpublickeyは、踏み台上172.16.10.20にあります。

(追記)
踏み台への接続は成功している様子です。
踏み台にログインした後に目的のサーバーにログインする際にエラーを起こしている様子です。

発生している問題・分からないこと

SSH2自動ログインエラー:ユーザー認証が失敗しました。
と表示されます。

エラーメッセージ

error

1SSH2自動ログインエラー:ユーザー認証が失敗しました。

該当のソースコード

ttl

1hostname1 = '172.16.10.20' 2username1 = 'user1' 3keyfile1 = 'C:\server1.pem' 4 5hostname2 = '172.16.30.50' 6username2 = 'user2' 7keyfile2 = '/home/user2/server2.pem' 8 9 10COMMAND = hostname1 11strconcat COMMAND ':22 /ssh /auth=publickey /user=' 12strconcat COMMAND username1 13strconcat COMMAND ' /keyfile=' 14strconcat COMMAND keyfile1 15 16connect COMMAND 17 18wait "$ " 19 20COMMAND = hostname2 21strconcat COMMAND ':22 /ssh /auth=publickey /user=' 22strconcat COMMAND username2 23strconcat COMMAND ' /keyfile=' 24strconcat COMMAND keyfile2 25 26connect COMMAND 27 28end 29 30

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

https://teratail.com/questions/127407 を見てmsgを出力してチェックしましたが特に問題らしいものが見当たりませんでした。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hqf00342

2024/09/18 07:51

エラーはどの段階で出ているのでしょうか。 踏み台サーバへのSSH接続はOKで、その先へのSSH接続がNGなのでしょうか。
wkbiz

2024/09/18 08:04

コメントありがとうございます。 踏み台へのSSHはOKで、踏み台に入って目的のサーバーに接続する際に躓いている感じです。 よろしくお願いします。
hqf00342

2024/09/18 08:15 編集

この書き方だと2段目の接続に「Teratermのconnectコマンド」は使えません。 すでに踏み台サーバの中にいるので手打ちするのと同じように「ssh ユーザ名@サーバ名 -i 秘密鍵ファイル」という文字列を送信してsshコマンドを実行しましょう。 もしくは1段目の接続をSSHポートフォワードする方法とし、2段目はポートフォワードポートに向かって「connect」コマンドで接続する方法もあります。 前者のほうが理解しやすいかとは思います
guest

回答2

0

自己解決

自己解決しました。
ご助言いただいた方々、ありがとうございました。

原因は、ところどころで「文字コードが化けていた」でした。
なぜそうなったのか経緯まで探れなかったのですが、
1.踏み台にログインできていなかった。
⇒踏み台接続connect の前と、目的サーバーconnect前に messagebox msg "msg"を置いてポップアップを出してステップ実行させていました。踏み台接続前のmsgboxが表示、OKボタン押下後、目的サーバー接続前のmsgbox
が表示されてOKボタン押下後にエラーが出ていたので、踏み台には接続できていたと勘違いしていました。

2.正常に動いていた「踏み台アクセス用ttlマクロ」と比較
⇒そこで別途用意していた踏み台アクセス専用のマクロと、目的サーバー接続用マクロと比較しました。
表面上は同じコードですが至る所で文字コードで差分が表示され、これが原因か?ということで
修正をしていったところ、自己解決に至ったというのが流れです。

yambejpさんが仰って頂いた、

ttl

1connect jumpserver 2 3wait 4Sendln 'ssh -i keyfile.pem username@123.123.123.123'

として実行したところ、無事、踏み台を超えて目的サーバーに接続ができました。

投稿2024/09/18 09:21

wkbiz

総合スコア154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2024/09/18 09:32

はい、ご苦労さまです
guest

0

踏み台にログインした後にsh状態から
「$」を待って

wait '$' sendln 'ssh -l username 10.150.96.194'

で接続するのでは?
(詳細オプションは不明、適当に追加してください)

投稿2024/09/18 07:44

yambejp

総合スコア116443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wkbiz

2024/09/18 08:49

コメントありがとうございます。 18g行目、wait "$ " の次の行からend前まで一旦コメントアウトした上で sendln 'ssh -i ./server2.pem user2@172.16.30.50' を記して再実行しましたが、 「Link macro first Use 'connect' macro.」エラーになってしまいました。
yambejp

2024/09/18 09:11 編集

19行目以降をコメントアウトしたままの状態でマクロを実行したときはエラーはでますか? ようは流れ的には connect 踏み台サーバー wait '$' sendln 'ssh 目的サーバー' という流れなので、まずは踏み台サーバーにsshログインできているかが最初の確認事項です できていればシェルが$を返すので目的サーバーへのログインコマンドを入力するsendlnの作業に移れます
wkbiz

2024/09/18 09:23

ご教授ありがとうございました。 自己解決したのでそちらをご覧いただければと思いますが、文字コードがおかしかったというのが原因でした。 あとはyambejpさんに仰って頂いた sendln に変えたところ無事実行できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問