#author("2020-05-22T13:32:54+09:00","default:edit_user","edit_user") #author("2020-05-22T15:15:07+09:00","default:edit_user","edit_user") *** SSHってなになの? [#weffa11c] - サーバにアクセスする場合、いままでは telnet が主に使用されていましたが、この telnet コマンドやパスワードが平文で送信されているため盗聴の危険のあるネットワーク(インターネット)で使用するのはリスクが高く非常に危険で考え出された方法として、暗号化を施し通信するという考えに基づき考えられたのが [[SSH>http://ja.wikipedia.org/wiki/Secure_Shell]] (Secure SHell) です。 - 最近では、フリーのLinuxは全てsshがデフォルトでインストールされ、sshにより端末からアクセスします。 - ここでは、ssh の設定ファイル値のみ解説します。 *** sshの設定ファイル [#o1876e12] - /etc/ssh/sshd_config # ポート指定 Port 50000 # SSHプロトコルの指定 Protocol 2 # rootでのアクセス禁止 PermitRootLogin no StrictModes yes # RSA公開鍵認証 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys # .rhostsおよび.shostsファイルを使用しない RhostsRSAAuthentication no # /etc/passwordによる認証の無効化、空パスワードの無効化 PasswordAuthentication no PermitEmptyPasswords no # hoge, hoge2 ユーザのみアクセスを有効にする AllowUsers hoge hoge2 # 最大起動数(SSHピンポンダッシュ) MaxStartups 10:30:60 # 公開鍵などを保管するディレクトリ等の属性が適切に設定されているか StrictModes yes # ~/.rhosts or ~/.shosts ファイルの無効化 IgnoreRhosts yes # チャレンジ・レスポンス認証 ChallengeResponseAuthentication no # X11 port forwardingを無効化 X11Forwarding no - 設定が終わったら sshd の再起動/自動起動設定を行います。 # /etc/init.d/sshd restart -- Fedora16 の場合 % sudo systemctl restart sshd.service % sudo systemctl enable sshd.service ** ssh鍵の生成 [#h968097e] - Unix や Linux などの環境を持っている人は少ないので、ここでは [[PuTTY>http://yebisuya.dip.jp/Software/PuTTY/]] 付属の「puttygen.exe」を使って鍵を生成していきます。 - COLOR(RED){''作成した秘密鍵は自分を証明する物ですので他人と共有したりしないようにしましょう。''} - puttygen.exe を実行します。 -- 初期の状態(生成する鍵のビット数は、2048にします)~ &ref(putty_key_01.png,center,wrap,nolink); -- 「生成」ボタンを押下してマウスをグリグリします。~ &ref(putty_key_02.png,center,wrap,nolink); -- 鍵が生成されたらパスフレーズを入力します、鍵のコメントも編集しておきましょう。~ &ref(putty_key_03.png,center,wrap,nolink); -- 公開鍵と秘密鍵を保存します。拡張子は、「pub=公開鍵、ppk=秘密鍵」とします。 -- PuTTYで作成された秘密鍵は、OpenSSHでは使用できないので「変換-OpenSSH形式へエクスポート」にて変換することにより使用することができます。 ** 公開鍵の登録 [#w81ad7af] - 接続するサーバにPuTTYで作成した公開鍵を登録します。~ PuTTYで作成された公開鍵は、OpenSSH形式でないのでOpenSSH用に変換する必要があります。 - sshの設定と、OpenSSH用に変換する手順は以下の通りです。 ++ ホームディレクトリ以下に .ssh ディレクトリを作成します。 % cd ~ % mkdir .ssh % chmod 700 .ssh ++ PuTTYで作成された公開鍵をOpenSSH用に変換します。 % cd ~/.ssh % ssh-keygen -i -f 公開鍵.pub > authorized_keys % chmod 600 authorized_keys ** PuTTY から秘密鍵を使用してアクセスする [#s04f0e2d] - ここらへんを参考に(汗 -- [[DebianGNULinux3.1SargeでSSH!>http://www.kozupon.com/ssh/ssh.html]] -- [[SSHを鍵認証方式に変更>http://www.zuk.jp/debian4/ssh-remotekey.html]] ** sftp を使ってみる [#w18face8] - セキュアなアクセスができたら次は、ファイル転送をやりたくなりますよね(笑)。~ scpでもよいのですが、より高機能な sftp を使用してみます。 -- ここらへんが、sftp ってなに?というので詳しく書かれています。 [[参考1>http://www.atmarkit.co.jp/fnetwork/rensai/tcp28/02.html]],[[参考2>http://www.atmarkit.co.jp/fnetwork/rensai/netool17/winscp01.html]] - sftpを対応しているソフトで使いやすそうな、[[FileZilla>http://www.ex.media.osaka-cu.ac.jp/windows/filezilla.html]] を使いましょうー。 -- FileZillaに秘密鍵を登録するには、「編集メニュー」から「設定」を実行し設定ダイアログが表示されたら、ツリーからSFTPを選択すると、鍵ファイルを登録することができます。 -- コメントはずす # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server ** sftp と ChrootDirectory [#b97f3e3b] - sftpをデフォルトで使用すると、管理者以外でもホームパスより上へアクセスすることができてしまいます。~ システムファイルは、root以外でアクセスすることができませんが多少気持ち悪いので ChrootDirectory を使用することによって~ vsftpd で指定する「chroot_list_enable=YES」と同じようなことができます。 - sftp でもパスワード認証で公開すると意味がないので、鍵認証も同様に使用できるように設定します。 :COLOR(RED){注意点}|ChrootDirectory では、root 権限になるため公開鍵を読み込ませることができないため~ 通常のユーザディレクトリと ChrootDirectory でのディレクトリを分離し管理する必要があります。 + sftponly グループに属しているユーザのみをsftpが使用できるポリシーとします。 + sftponly グループを追加します。 # groupadd sftponly ++ sftpを使用したいユーザをsftponlyグループに追加します。(例では、hoge と hoge2) sftponly:x:1002:hoge,hoge2 + /etc/ssh/sshd_config を編集します。 # 内部のsftpを使うように指定する #Subsystem sftp /usr/local/libexec/sftp-server Subsystem sftp internal-sftp # 認証されたユーザがsftponlyグループの場合、ChrootDirectoryを実施する Match group sftponly ChrootDirectory /home2/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp + sshd を再起動する # /etc/init.d/sshd restart -- Fedora16 の場合 % sudo systemctl restart sshd.service + 公開鍵(authorized_keys)を $HOME/.ssh に設定する hoge -> /home/hoge/.ssh/authorized_keys hoge2 -> /home/hoge2/.ssh/authorized_keys ++ hoge2 の設定 # cd /home # mkdir hoge2 # cd hoge2 # mkdir .ssh # chmod 700 .ssh # .ssh # cp /home/hoge/.ssh/authorized_keys . + ChrootDirectory での /home2 は root だけが書き込みできるようにする # chmod 0700 /home2 + ChrootDirectory で管理されるディレクトリを作成する(hoge の場合) # mkdir -p /home2/hoge # chown root:root /home2/hoge # chmod 766 /home2/hoge + hoge が書き込めるディレクトリを作成する(share でなくてもok、好きなディレクトリ名でw) # cd /home2/hoge # mkdir share # chown hoge:hoge share # chmod 777 share -- 参考にさせて頂いたサイト&br; [[あるシステム管理者の日常>http://d.hatena.ne.jp/rougeref/20080627/p1]]&br; [[CentOS の OpenSSH で chroot を設定する>https://blog.manabusakai.com/2013/04/openssh-chroot/]]&br; [[【Linux】[ssh]sftp-serverとinternal-sftpの違い>https://ameblo.jp/yukozutakeshizu/entry-12443078874.html]] [[【Linux】[ssh]sftp-serverとinternal-sftpの違い>https://ameblo.jp/yukozutakeshizu/entry-12443078874.html]]&br; [[Chrootなディレクトリの外へリンクしたシンボリックリンクを置いて使えない時の対処法>https://chekke.work/2019/10/22/1498/ssh-chroot-mount-bind/]] *** 参考にさせて頂いたサイト様 [#xc9a9553] -- [[SSHでリモートログインを許可する (sshd)>http://www.kishiro.com/FreeBSD/ssh.html]]