Windows10 BashへのSSH接続メモ
- 2016/08/10
- 00:44
ほんとにただのメモです!
事前の準備(Window10上の操作):
開発者モードにしたときに起動するWindows10のSSHサービスの停止
「Windows 管理ツール」の「サービス」
(または直接「ファイル名を指定して実行」(Winキー+r)でservices.msc
SSH Server Broker
SSH Server Proxy
を停止
(無効にして良い)
「コントロールパネル」「Windows ファイアウォール」の中の
「受信の規則」のSSH Server Proxy Serviceを無効に
Linux上のSSHのためにポートを開ける
「Windows ファイアウォール」で新しい規則を選び、TCP port22を有効にする。
規則の種類 → ポート
プロトコルおよびポート → TCP ポート22
操作 → 接続を許可する
プロファイル → ドメイン、プライベート(現在のネットワークに合わせて設定。わからない場合はコントロールパネル→ネットワークと共有センターで現在接続されてるネットワークの種類が見れます)
名前 → 適当に付ける
--------------------------------
以下 bash上での操作:
ホストキーを作る
cd /etc/ssh
(カレントディレクトリを/etc/sshに)
sudo ssh-keygen -t rsa -N '' -f ssh_host_rsa_key
(keygenで秘密鍵、公開鍵を作る。パスフレーズは無し。''はシングルクォート2つ)
これで/etc/sshに ssh_host_rsa_key, ssh_host_rsa_key.pubが作られる。
sshdの設定
/etc/ssh/sshd_config の編集
vim(テキストエディタ)を使って編集。
sudo vim /etc/ssh/sshd_config
(Linux初心者でvim(vi)を使ったことが無い人は、終了の仕方すらよくわからずたいへんなことになりそうなので事前に使い方を覚えておいたほうが良いかも)
とりあえずrsaのみで良いので、それ以外の
Hostkey /etc/ssh/ssh_host_dsa/key
Hostkey /etc/ssh/ssh_host_ecdsa/key
Hostkey /etc/ssh/ssh_host_ed25519/key
の先頭に#を付けてコメントアウト
(これは別にコメントアウトしなくても有効なホストキーが1つでもあれば正常に動きます)
UsePrivilegeSeparation を no に設定。
とりあえず接続テストのためにパスワード認証 PasswordAuthentication を yes に。
(公開鍵をauthorized_keysに追加までやるならnoのままでも)
修正した設定を保存。
sshサーバ起動
sudo /etc/init.d/ssh start
停止
sudo /etc/init.d/ssh stop
リスタート(sshd_configの変更を反映したいときなど)
sudo /etc/init.d/ssh restart
テスト:
sshdを起動してbash上で
ssh localhost
(初回は~/.ssh/known_hostsのリストに無いサーバとの接続なのでyes/noの確認を求められる。yesでその後linuxのパスワードを入力)
これでログインできればとりあえず成功。
logout とか exit でログアウト。
--------------------------------
公開鍵による接続:
自分のアカウント上で秘密鍵と公開鍵を作る
ssh-keygen -t rsa -N ''
Enter file in which to save the key (ここにデフォルトのファイル名):
という入力メッセージがでてくるので、ここはデフォルトのままEnter。
これで ~/.ssh に秘密鍵、公開鍵が作られる。
ls ~/.ssh
で鍵(id_rsa, id_rsa.pub)が作られていることを確認。
まずはテストで自分自身をauthorized_keysに追加してみる。
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
(公開鍵をauthorized_keysに追加)
パーミッションの確認
ls -l で各ファイルのパーミッションの確認(合ってないとうまく動作しません)
autholized_key (鍵束)と id_rsa(秘密鍵)は 600 (-rw-------)
id_rsa.pub(公開鍵)は 644で良い (-rw-r--r--)
合ってなければ chmod コマンドで修正
例:chmod 600 authorized_keys
この状態でssh接続を試す
ssh localhost
パスワード無しで接続できれば成功
(鍵を作るときにパスフレーズ(-N '' の部分)を設定している場合は、接続時の秘密鍵利用でパスワードを求められます)
他のPCから接続を試す
パスワード認証なら
ssh ユーザ名@IPアドレス
でLinuxのパスワードを入れて接続
公開鍵を使うなら
接続する別PC上で鍵を作り、作成した鍵のうち公開鍵を先ほど追加したauthorized_keysの後ろにさらに追加。
その後、ssh ユーザ名@IPアドレスで接続。
(パスフレーズを設定していなければ即接続。パスフレーズを設定しているなら接続時にそれを入力することになります)
--------------------------------
アクセス設定(hosts.deny, hosts.allow):
/etc/hosts.denyに
ALL:ALL
を追加して全てはじいて
/etc/hosts.allowで許可設定
例:(localhost全許可、sshdはローカルIP 192.168.*.*からの接続を許可)
all :127.0.0.1
sshd :192.168.0.0/16
--------------------------------
おまけ:
sudo時にsudo: ホスト ******* の名前解決ができませんのメッセージ。
/etc/hosts ファイルにホストネームを追加
とりあえずlocalhostの下に追加
127.0.0.1 localhost
127.0.1.1 hogehoge ← Windows10のPC名
(ubuntuオリジナルにならって127.0.1.1にホストネームを追加)
事前の準備(Window10上の操作):
開発者モードにしたときに起動するWindows10のSSHサービスの停止
「Windows 管理ツール」の「サービス」
(または直接「ファイル名を指定して実行」(Winキー+r)でservices.msc
SSH Server Broker
SSH Server Proxy
を停止
(無効にして良い)
「コントロールパネル」「Windows ファイアウォール」の中の
「受信の規則」のSSH Server Proxy Serviceを無効に
Linux上のSSHのためにポートを開ける
「Windows ファイアウォール」で新しい規則を選び、TCP port22を有効にする。
規則の種類 → ポート
プロトコルおよびポート → TCP ポート22
操作 → 接続を許可する
プロファイル → ドメイン、プライベート(現在のネットワークに合わせて設定。わからない場合はコントロールパネル→ネットワークと共有センターで現在接続されてるネットワークの種類が見れます)
名前 → 適当に付ける
--------------------------------
以下 bash上での操作:
ホストキーを作る
cd /etc/ssh
(カレントディレクトリを/etc/sshに)
sudo ssh-keygen -t rsa -N '' -f ssh_host_rsa_key
(keygenで秘密鍵、公開鍵を作る。パスフレーズは無し。''はシングルクォート2つ)
これで/etc/sshに ssh_host_rsa_key, ssh_host_rsa_key.pubが作られる。
sshdの設定
/etc/ssh/sshd_config の編集
vim(テキストエディタ)を使って編集。
sudo vim /etc/ssh/sshd_config
(Linux初心者でvim(vi)を使ったことが無い人は、終了の仕方すらよくわからずたいへんなことになりそうなので事前に使い方を覚えておいたほうが良いかも)
とりあえずrsaのみで良いので、それ以外の
Hostkey /etc/ssh/ssh_host_dsa/key
Hostkey /etc/ssh/ssh_host_ecdsa/key
Hostkey /etc/ssh/ssh_host_ed25519/key
の先頭に#を付けてコメントアウト
(これは別にコメントアウトしなくても有効なホストキーが1つでもあれば正常に動きます)
UsePrivilegeSeparation を no に設定。
とりあえず接続テストのためにパスワード認証 PasswordAuthentication を yes に。
(公開鍵をauthorized_keysに追加までやるならnoのままでも)
修正した設定を保存。
sshサーバ起動
sudo /etc/init.d/ssh start
停止
sudo /etc/init.d/ssh stop
リスタート(sshd_configの変更を反映したいときなど)
sudo /etc/init.d/ssh restart
テスト:
sshdを起動してbash上で
ssh localhost
(初回は~/.ssh/known_hostsのリストに無いサーバとの接続なのでyes/noの確認を求められる。yesでその後linuxのパスワードを入力)
これでログインできればとりあえず成功。
logout とか exit でログアウト。
--------------------------------
公開鍵による接続:
自分のアカウント上で秘密鍵と公開鍵を作る
ssh-keygen -t rsa -N ''
Enter file in which to save the key (ここにデフォルトのファイル名):
という入力メッセージがでてくるので、ここはデフォルトのままEnter。
これで ~/.ssh に秘密鍵、公開鍵が作られる。
ls ~/.ssh
で鍵(id_rsa, id_rsa.pub)が作られていることを確認。
まずはテストで自分自身をauthorized_keysに追加してみる。
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
(公開鍵をauthorized_keysに追加)
パーミッションの確認
ls -l で各ファイルのパーミッションの確認(合ってないとうまく動作しません)
autholized_key (鍵束)と id_rsa(秘密鍵)は 600 (-rw-------)
id_rsa.pub(公開鍵)は 644で良い (-rw-r--r--)
合ってなければ chmod コマンドで修正
例:chmod 600 authorized_keys
この状態でssh接続を試す
ssh localhost
パスワード無しで接続できれば成功
(鍵を作るときにパスフレーズ(-N '' の部分)を設定している場合は、接続時の秘密鍵利用でパスワードを求められます)
他のPCから接続を試す
パスワード認証なら
ssh ユーザ名@IPアドレス
でLinuxのパスワードを入れて接続
公開鍵を使うなら
接続する別PC上で鍵を作り、作成した鍵のうち公開鍵を先ほど追加したauthorized_keysの後ろにさらに追加。
その後、ssh ユーザ名@IPアドレスで接続。
(パスフレーズを設定していなければ即接続。パスフレーズを設定しているなら接続時にそれを入力することになります)
--------------------------------
アクセス設定(hosts.deny, hosts.allow):
/etc/hosts.denyに
ALL:ALL
を追加して全てはじいて
/etc/hosts.allowで許可設定
例:(localhost全許可、sshdはローカルIP 192.168.*.*からの接続を許可)
all :127.0.0.1
sshd :192.168.0.0/16
--------------------------------
おまけ:
sudo時にsudo: ホスト ******* の名前解決ができませんのメッセージ。
/etc/hosts ファイルにホストネームを追加
とりあえずlocalhostの下に追加
127.0.0.1 localhost
127.0.1.1 hogehoge ← Windows10のPC名
(ubuntuオリジナルにならって127.0.1.1にホストネームを追加)
スポンサーサイト