macOS Sierra では1024bit以下の鍵を使ったクライアント認証が使えない

macOS SierraやiOS10でPPTPが非対応になってVPN接続で困っているという話を時々聞くようになりましたが、実はSSH接続でも1025以下の暗号強度で作成した秘密鍵が使えなくなっているという問題もあります。

Apple、macOS SierraでOpenSSH v7を採用。いくつかのレガシーな暗号が無効に。

これまでは、
# ssh-keygen -b 1024 -t dsa
とコマンドを打って作ったものが使えなくなっています。取り急ぎ、
# ssh-keygen -f id_rsa -t rsa -b 2048
で作り直して、Sierraにアップデートしていない方のMacでサーバに設定してなんとかなりましたが、これは想定外で慌てました。

SSH接続ユーザの強制ログアウト方法

ずっとログインしたままのユーザが居ると聞いてwコマンドで確認。
fオプションは接続元IPを非表示にします。これは最初から接続元が分かっているのであれば不要なのと実行中のコマンド内容が右端で切れてしまうのでそれを防ぐためにつけています。
実験的にVMのCentOS6.4で試してみました。

[root@CentOS64 ~]# w -f
08:40:57 up 15 min, 3 users, load average: 0.00, 0.03, 0.08
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 08:40 0.00s 0.05s 0.03s w -f
user1 pts/1 26Nov13 21days 0.01s 0.01s -bash
user2 pts/2 26Nov13 21days 0.01s 0.01s -bash

2人のユーザがログインしたまま放置されていました。全くけしからん。
次にpsコマンドの結果からsshdを抽出し対象のプロセスIDを調べます。

[root@CentOS64 ~]# ps ax | grep sshd
1093 ? Ss 0:00 /usr/sbin/sshd
1252 ? Ss 0:00 sshd: user1 [priv]
1256 ? S 0:00 sshd: user1@pts/1
1272 ? Ss 0:00 sshd: user2 [priv]
1276 ? S 0:00 sshd: user2@pts/2
1349 ? Ss 0:00 sshd: root@pts/0
1368 pts/0 S+ 0:00 grep sshd

ここで見るのはptsとついた行になります。
もっと絞り込めば、こんな感じでしょうか。

[root@CentOS64 ~]# ps ax | grep "sshd: .*@pts/"
1256 ? S 0:00 sshd: user1@pts/1
1276 ? S 0:00 sshd: user2@pts/2
1349 ? Ss 0:00 sshd: root@pts/0
1393 pts/0 S+ 0:00 grep sshd: .*@pts/

こうすれば対象のプロセスIDが1256と1276であることが分かります。

それでは殺しましょうw

[root@CentOS64 ~]# kill 1256
[root@CentOS64 ~]# kill 1276

これでログインしたままのユーザを強制排除できました。さっそく確認しましょう。

[root@CentOS64 ~]# ps ax | grep "sshd: .*@pts/"
1349 ? Ss 0:00 sshd: root@pts/0
1395 pts/0 S+ 0:00 grep sshd: .*@pts/

ね、生きていないですねw

用法は
・メンテしたいのでユーザに出て行って欲しい時
・不審な接続の排除
・通信切れ等で残ったゴミ接続の掃除
となります。

因みにユーザ権限では他のユーザを追い出すことは出来ませんのでご心配なく。

ポートフォワードを使って踏み台先のサーバにFileZillaでファイル送受信する

WinSCPはトンネルの設定があり単体で踏み台経由の接続ができますが、残念な事にこのツールがWindows版しか無い為、他のOSでは別の方法をとる必要があります。

その一例としてsshコマンドによるポートフォワードを使った接続を紹介します。

1.ターミナルを立ちあげてポートフォワードを行う

ssh -L <ローカルポート>:<転送先ホスト>:<転送先ポート> <踏み台ホスト>

ローカルポート:FileZillaに設定したいポート番号
転送先ホスト:踏み台からアクセスするサーバー
転送先ポート:踏み台からアクセス先のサーバーへ接続するポート

例えば普段SSHで以下のように接続する場合

ssh user1@172.16.33.43 (踏み台)
ssh user2@192.168.1.6 (転送先)

割り当てるローカルポート番号を10022とすると
ssh -L 10022:192.168.1.6:22 user1@172.16.33.43 -p 22

この状態でlocalhost:10022は172.16.33.43経由で192.168.1.6:22に接続される。
注意点としては上記コマンドを実行して172.16.33.43にログインした後は、FileZillaの作業が終わるまで閉じないこと。

2.FileZilla で接続する。
ホスト名に localhost、ポートに 設定したポート番号、ユーザ名はuser2
(上記の例で行くと 10022 を設定する)