行のコメントを外したり、その行の値を変更したり、行のコメントを外したりするには、いくつかのファイルを編集する必要があります。これをbashスクリプトで実行しようとしています。
/etc/ssh/sshd_config
を編集して変更しようとしています
IgnoreRhosts yes
#RhostsRSAAuthentication no
に
IgnoreRhosts no
RhostsRSAAuthentication no
そして変化
#PermitRootLogin yes
に
PermitRootLogin no
AllowUsers mroberts
また、/etc/pam.d/system-auth
ファイルを編集して、
password sufficient pam_unix.so try_first_pass use_authtok nullok md5
に
password sufficient pam_unix.so try_first_pass use_authtok nullok md5 shadow
また、次の行を/etc/pam.d/system-auth
ファイルに追加する必要があります。
/etc/pam.d/system-auth file password required pam_unix.so remember=10
私はvi
を使用してこのすべてを手動で行っており、そのエディターで変更を加えることができます。ただし、この手順は多くのホストで実行する必要があり、一度に1つのホストでプロセスを繰り返すことはできません。 AllowUsers mroberts
を追加するのを忘れ、36時間近くホストからロックアウトされた場所でミスをしました。
行を検索してその一部を変更する方法はわかりませんが、行全体を変更する方法はわかりません。
ターミナルから、またはbashスクリプトを使用して、このような変更を行う方法はありますか?
元のファイルを取り、sshd_config.orig
として保存します。
sshd_config
を思いのままに編集します。
走る
diff sshd_config.orig sshd_config >config.patch
config.patch
ファイルは安全な場所に保管してください。
これで、sshd_config
の新しい未編集バージョンがあり、同じ編集を適用したい場合は、次を実行します:
patch sshd_config /path/to/config.patch
これにより、同じ編集が新しいファイルに適用されるか、ユーザーの助けなしでは解決できない矛盾がある場合は警告が表示されます。
Unixには、ファイルを変更するための強力なコマンドラインツールもあり、エディターは不要です。
sed
を使用して、たとえば:
sed -i.bak 's/IgnoreRhosts yes/IgnoreRhosts no/' sshd_config
または、GNU awkで同じ変更を実行します。
gawk -i inplace '$1=="IgnoreRhosts" {$2="no"} 1' sshd_config
patch
アプローチにより、一度に多くの変更を簡単に行うことができます。変更の数が少ない場合は、sed
およびawk
Excel。 sed
の詳細については、たとえば このチュートリアル を参照してください。 awk
の詳細については、たとえば このチュートリアル を参照してください。