カメノドットコム
Debian大好きでメインで節操ない感じ。
GMOもわりと好き。
RSS feedly

PowerShell/Win32-OpenSSHの基本的な使い方

「PowerShell」で使用しますので、CUIでゴリゴリといきます。慣れると便利らしいですよ?
コマンドのことを「コマンドレット」と呼ぶそうですが、長いので「コマンド」と記述します。
PowerShell/Win32-OpenSSHのインストール を参考程度に、OpenSSHをゲットして解凍、インストール、パスを通す、を済ませている前提で進めます。

あと。気をつけていただきたいのが。
仮想環境のWinXPで動作確認するという呆れたことをやっておりますので、最新版とはコマンドやオプションが違っているかもしれません。
Window7までは手持ちのソフトがギリギリ動くんですが、動かないのも割とあるのでXPで止まってます。高いんだよ、いろんなソフトが。

パスワード認証でのSSH接続の方法

VPS契約してクライアントで接続して設定をホニャララして……という場合、最初はユーザとパスワードでの接続、認証になります。
最も基本的な使い方ですが、セキュリティ的にはザルも同然ですので、後述するキーペアを使用した鍵認証に切り替えるようにしてください。

> ssh.exe ユーザ@もらったIP
// 初回接続時
The authenticity of host 'もらったIP (もらったIP)' can't be established.
ECDSA key fingerprint is SHA256:i61G8BrgUgc2PmeAP8fZkoANEy4X9TN8HGTVzuM3PGw.
Are you sure you want to continue connecting (yes/no)?    // 「yes」でホストのキーを登録します
// ここからは毎回同じ
ユーザ@もらったIP's password:    // 入力したパスワードは隠されます

ssh.exe とかのコマンド部分は TABキー の補完が効くはずです。
初回接続時は色々と表示されますが、2回目以降はパスワードを尋ねられるだけです。
ハイ「IPとかいちいち打ち込むのウゼー」と思ったあなた。
設定ファイル1枚で簡単接続できるようになりますのでご安心を。

ssh-keygenでキーペアを作成

いわゆる「公開鍵認証方式」に使用する秘密鍵と公開鍵のセットです。ウチのサイトでは「鍵認証」「キーペア」と呼んでることが多いです。
パスワード認証は危険すぎるので、すみやかに鍵認証に切り替えましょう。
ここらあたりからはUnixとかLinuxとかBSDとかMacとかとほとんど一緒です。
てゆーか、検証環境がないので、これでイケるんじゃね? 的なテケトーさで書いてます。ゴメン(←WinXPで止まってる女)
セキュリティ高めの「ED25519」という形式で作成します。
「そんな鍵、知らないからヤダ」とか思われましたら「RSA2」で「4096bit」あたりにしておくといいんじゃないですかね。

> ssh-keygen -t ed25519 -C "WorkingUser-20171009" -f id_worker
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):  // 空にしておく
Enter same passphrase again:                 // 空にしておく
Your identification has been saved in id_worker.
Your public key has been saved in id_worker.pub.
The key fingerprint is:
SHA256:Y9Rdn9l7ClMAwQnhSb+2XDm5ExI3NVmoAg+v1uIRlMM WorkingUser-20171009
The key's randomart image is:
+--[ED25519 256]--+
|       .+=o+. ++.|
|       oE+o. +oo+|
|       .+*+ +..oo|
|       .. ++.=  .|
|        S++.O  ..|
|       .=+.+ * ..|
|       o oo o .  |
|        .    .   |
|                 |
+----[SHA256]-----+
PS C:\Documents and Settings\PC\.ssh> cat .\id_worker.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG7ZBXpuHdM9VOywuKtujChYzkllOfRIpDOdMqkTTZOX WorkingUser-20171009

真面目にセキュリティ対策をしたパスフレーズを設定すると割と大惨事なので(←何回もやってる)パスフレーズナシにしてます。
-C "WorkingUser-20171009" はキーペアのコメントです。いつ、何のために作ったのか、わかりやすく入れておきます。
-f id_worker でファイル名を指定しています。ウチのサイトではFTPサーバを設置せず、SSHサーバの機能であるSFTPを使いますので、キーペアを分けるために名前をつけています。
「.ssh」ディレクトリの中にキーペアが作成されているはずなので、確認してみます。

> cd ~
> ls

    ディレクトリ: C:\Users\UserName

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2017/10/09     18:05            .ssh
d---s        2017/09/22     14:56            Cookies
d-r--        2017/09/22     14:58            Favorites
d-r--        2017/09/24     23:17            My Documents
d-r--        2017/09/22     14:47            スタート メニュー
d----        2017/09/22     18:38            デスクトップ

> cd .ssh
> ls

    ディレクトリ: C:\Users\UserName\.ssh

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2017/10/09     18:05        418 id_worker
-a---        2017/10/09     18:05        103 id_worker.pub
-a---        2017/10/09     17:58        175 known_hosts

ちゃんとキーペアができてますね。生意気にもパーミッションが設定されてるじゃないですか。いや、これで正しいんだけど。
ディレクトリ移動や一覧表示にLinuxのコマンドを使ってますが、VPSなどでLinuxサーバを立てる場合、あえてWindowsなコマンドを使う必要はないでしょう。
むしろUnix系のコマンドに慣れたほうがいいです。

公開鍵をサーバに転送する

一発で登録できる便利なコマンドもありますが、ここはあえて遠回りで。コマンドやパーミッションを覚える意味でも。
サーバに一般ユーザを作成していない場合は 一般ユーザを追加する を参考にして作成しておいてください。
scp というコマンドで、作成してある hoge のホームディレクトリに公開鍵を転送します。
……実は一行のテキストファイルなので、ウィンドウ間でコピペとかいう強引なこともできますが。

> cd ~; cd .ssh
> scp id_worker.pub hoge@もらったIP:
hoge@もらったIP's password: 
id_worker.pub                                 100%  102     0.1KB/s   00:00

hoge@もらったIP」のあとに必ず「:(コロン)」とか「:~(コロン+チルダ)」とかを入れてください。
この一文字のせいでファイル転送ができず「???なして???」となることが(経験者談)
サーバ側での作業は SSHのパスワードログインを禁止して公開鍵認証を強制する をご覧ください(手抜き)

configファイルで楽々接続

これがCUIの本領発揮です。
……のはずなんですが、「Windowsでは拡張子のみのファイルもしくは拡張子のないファイルを作成できない」というヘンな制限により、ひと手間余分にかかります。大した手間じゃないんですけど。
「.ssh」ディレクトリの中に「config」というファイルを作成して適切に設定することで、SSH接続を簡単にすることができます。
とりあえず、悲しい事情により「.ssh」ディレクトリの中に「config.txt」というファイルを作ります。
で、接続するサーバのIPアドレス、ユーザ、キーペア、ポートなどをまとめて書いて名前を付けます。
書式などは SSH接続を簡単にする をご覧ください(手抜き2)
「config.txt」と余計な拡張子がついてますので、CUIでリネームします。

> mv config.txt config

SSH接続の識別名に「gmo-kameno」とつけた場合、以下のコマンドで接続できます。

> ssh gmo-kameno

……スミマセン。ウチの仮想環境(WinXP)ではこの動作が確認できませんでした。
ググってみたところ、どうしても出来ないという記事はないみたいなので、多分OKです。

お疲れ様でしたー。
お好きな記事やサイトにお戻りください。
確実な確認環境がないから疲れましたー。

Sponsored Link