CVE-2019-6111 により scp の脆弱性が明らかになっているので、 scp を無効化する方法を考えてみました。
そう、 zsh ならね
zsh で scp を使えなくするには、リモート ホストの ~/.zshenv
にこう書きます。 (ログイン シェルを zsh にしている前提です。)
scp () {
echo "Use 'sftp' or 'rsync' instead." >&2
false
}
雑な解説
scp コマンドは、 non-interactive (非対話的) シェルで scp をリモート実行しようとするので、前述のシェル関数があると通信が阻害されて以下のようにエラーになります。
% /usr/sbin/scp remote:.zshenv /tmp/
Use 'sftp' or 'rsync' instead.
lost connection
絶対パスを指定しないと、もちろん以下のようにローカル側でエラーになります。
% scp remote:.zshenv /tmp/
Use 'sftp' or 'rsync' instead.
zsh 以外のシェルの場合
Bash では non-interactive シェルで暗黙的に実行されるスクリプトがないので、設定が面倒なのですよね。