この方法を使えばsshの公開鍵認証をできるだけでなくファイル転送をできるようになります。 *作成したVMにsshの公開鍵認証を行うと類似した内容が多数あります。 この記事ではクライアント側の操作は(クライアント)、ホスト側の操作は(ホスト)と書いてあります。 卒業課題(22).jpg (62.6 kB)

環境

  • windows10
  • powershell7
  • 踏み台サーバーを通したVM接続
  • 公開鍵は作成済み

sshの鍵を確認(クライアント)

作成したVMにsshの公開鍵認証を行う 公開鍵を出力(クライアント) を見て行ってください。

公開鍵認証をする(ホスト)

作成したVMにsshの公開鍵認証を行う サーバ側(VM側)の操作(ホスト) を見て行ってください。

VMのIPアドレスを調べる(ホスト)

IPアドレスを調べるコマンド ip コマンドを使用します

ip a
ens の inet を確認します。今回は 192.168.100.84 がこのVMのIPアドレスとなります。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:1b:03:67 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.84/24 brd 192.168.100.255 scope global dynamic ens160
       valid_lft 31594sec preferred_lft 31594sec
    inet6 fe80::20c:29ff:fe1b:367/64 scope link
       valid_lft forever preferred_lft forever

設定ファイルを変更する(クライアント)

クライアント踏み台サーバーVMを1回のsshで繋ぎます。

notepad .ssh\config
初めて config を編集するときはこの様な警告が出るので「はい(Y)」をクリックしてください。 image.png (22.8 kB)

以下の様に書き加えます。 ```.ssh/config ForwardAgent yes <踏み台サーバーの情報の例> Host <踏み台サーバーのHost名> Hostname 10.203.63.52 User <ユーザー名> Port 22000 IdentityFile ~/.ssh/id_ed25519 DynamicForward 10080

<接続したいVM> Host <自分が入れたい文字> Hostname <VMのIPアドレス> User <ユーザー名> Port 22 IdentityFile ~/.ssh/id_ed25519 ProxyCommand ssh -W %h:%p <踏み台サーバーのHost名>

| 属性 | 値 |
| -------- | -------- |
| ForwardAgent    | 既に書いている場合は入れなくていいです。     |
| Host  | VM 名だと覚えやすいですが、好きな文字を入れましょう。最終的にターミナルに「ssh 自分の入れた文字」を入力することで VM に ssh 接続します。    |
| Hostname    | VM の IP アドレスを入力しましょう。  |
| User    | VM に登録したユーザー名を入力してください。     |
| Port      | デフォルトは22番です。VM側で Port 番号を変更しているなら変更した Port 番号を入力してください。     |
| IdentityFile    | 秘密鍵の場所を入力します。今回は id_ed25519.pub の共通かぎを VM に登録するので、秘密鍵 id_ed25519 を登録します。   |
| ProxyCommand |  -W:netcat モードを有効にするオプション<br>%h:接続するホスト名に置き換え<br>  %p  :ポート番号に置き換え<br>つまり<踏み台サーバーのHost名>を参考にホスト名とポート番号を置き換えてssh接続を1回で済ませる処理をしています。 |

# ファイルを転送します(クライアント)
本題です。
ssh で接続できるか確認しましょう。下記のコマンドを入力してVM内にはいれれば成功です。
***コマンドを入力する場所は踏み台内ではなくクライアント内です。**
```sh
ssh <Host名>

sftpを使います。

sftp <VMのHost名>
Connected to work.
sftp>
以上になれば成功です。 pwd や ls が使えるので確かめてみてください。

ローカルファイルをVMに送る

もしかしたら絶対パスでしか通らな可能性があります。送りたいファイルのパスを調べて送りましょう。

put <ローカルファイル>

ログアウト
exit

sftp> put C:\Users\c01180500b.LAPTOP-KF4IA0NC\Downloads\log\nginx-copy\newlog*
Uploading C:/Users/c01180500b.LAPTOP-KF4IA0NC/Downloads/log/nginx-copy/newlog00.log to /home/ono/newlog00.log
C:/Users/c01180500b.LAPTOP-KF4IA0NC/Downloads/log/nginx-copy/newlog00.log                          100% 1962KB   9.7MB/s   00:00
Uploading C:/Users/c01180500b.LAPTOP-KF4IA0NC/Downloads/log/nginx-copy/newlog01.log to /home/ono/newlog01.log
C:/Users/c01180500b.LAPTOP-KF4IA0NC/Downloads/log/nginx-copy/newlog01.log                          100% 1920KB   3.4MB/s   00:00
C:/Users/c01180500b.LAPTOP-KF4IA0NC/Downloads/log/nginx-copy/newlog02.log                          100% 1554KB   2.4MB/s   00:00
sftp> exit

参考文献