SSH
Secure ShellまたはSSHとはローカルコンピュータとリモートコンピュータをつなぐ安全なチャンネルをつくる一連のネットワークプロトコルのセットです。 暗号化されたパブリックキーを使ってリモートコンピュータを確認し、(オプションとして)リモートコンピュータからもユーザーを確認することができます。 SSHはを暗号化とメッセージ確認コード(MACs)を使って二つのコンピュータ間の機密かつ統合されたデータ交換を可能にします。 SSHの典型的な使い方はリモートコンピュータにログインしてコマンドを実行することですが、ほかにもトンネリング、TCPポートのIPフォワーディング、X11接続などにも使えます; 関連するSFTPやSCPなどのプロトコルを使ってファイルを転送することもできます。 SSHサーバーはデフォルトでTCPのポート22を使います。ウィキペディアのSSHページ
SSHのより安全プロトコルの設定
SSHを通じてrootとしてのログインを許可するのは安全ではありません。 SSHに限らず、rootとしてログインするのをデフォルトで許可するのはよくありません。 Debianのように10分間もrootとしてのログインを試す時間を与えては自動化されたパスワード破りの攻撃ができるようになり、決して安全とは言えません。 ログインの時間や資格を制限するのはアドミンであるあなたの役目です!
sshをより安全にするため、まず好みのテキストエディタでrootとして:
/etc/ssh/sshd_config
のファイルを開き、問題の行を探して変更します。
変更が必要なのは次の項目です:
Port <desired port>: この項目はルータからデータが送られるポート番号にセットされていなければなりません。 ルータもこのポート番号にデータのフォワーディングをするよう設定する必要があります。 この設定の方法がわからない人は、多分SSHは使わないほうが無難でしょう。 Debianはデフォルトでポート22を使いますが、なるべく他の、標準からはずれた番号の使用を勧めます。 たとえばポート番号5845を使う場合の設定は:
Port 5874
ListenAddress <このコンピュータの(またはネットワークインターフェースの)IPアドレス>: 今ルータからポートのフォワーディングを行っているわけですから当然このコンピュータは固定されたIPアドレスを持つ必要があります。 (厳密にいえばローカルなDNSサーバーなどがあれば固定IPアドレスの必要はありませんがそのような複雑な設定を使いながら同時にこのマニュアルの説明を必要とするとしたら、多分何かひどい間違いをしているに違いありません) 一例をあげると:
ListenAddress 192.168.2.134
プロトコル2はDebianのデフォルトなので変更の必要はありませんが、念のため確認:
LoginGraceTime <ログインを許可する秒数>: デフォルトは不条理にも600秒にセットされていますが、ユーザー名とパスワードをタイプするのに10分もかかるわけがありません。 だからもっとまともな設定に変えます:
LoginGraceTime 45
これであなたがログインするのには45秒間のゆとりがあり、ハッカーにはパスワードをクラックするための600秒間を許さないように設定できました。
PermitRootLogin <yes>: どうしてDebianはデフォルトでPermitRootLogin(rootとしてのログイン許可)を'yes'に設定しているのでしょう、 理解できません。 ここはしっかり'no'に設定します
PermitRootLogin no
StrictModes yes
MaxAuthTries <xxx>: ログインの試みを許可する回数ですが、3回や4回まではともかくそれ以上に設定すべきではありません。
MaxAuthTries 2
次にあげる設定がされていなかったら付け加えます:
AllowUsers <ログインを許可するユーザーのリスト(複数の場合は空白で区切る)>
AllowUsers <xxx>: SSHでログインする権利だけのユーザーをadduserコマンドで作り、その名前をここのxxxのかわりに使います:
AllowUsers ユーザー名
PermitEmptyPasswords <xxx>: そしてこのユーザーに百万年かかってもクラックできない長ーいパスワードをつけてこのユーザーだけしかSSHでログインできないように設定します。 一旦ログインできたらその後suコマンドでrootになれます:
PermitEmptyPasswords no
PasswordAuthentication <xxx>: キーログインでなく、パスワードログインを使っている限りこのパスワード確認のオプションは必要です。 キーログインの設定でない時はyesに設定します。
PasswordAuthentication yes [unless using keys]
最後に:
service ssh restart
これで何とか完全にとは言えないまでも、SSH専用のユーザーなど、より安全なSSHになりました
ノート: もしsshが接続を拒否するエラーメッセージを表示する場合は、まず$HOMEディレクトリにいき、.ssh という隠れフォルダーに移動して、 known_hostsというファイルを削除して、もう一度試してください.この問題はよく、(DHCPにより)IPアドレスがダイナミックに変わるときによく起こります。
SSHのネットワークを通してXウィンドウズのアプリケーションを使う
ssh -X のオプションでリモートコンピュータにログインすると、端末PCのXウィンドウのデスプレイ上でリモートPCのGUIアプリケーションを使うことができます。(オプションのXは大文字ですから注意してください。:
$ ssh -X username@xxx.xxx.xxx.xxx (or IP)
そしてリモートPCのユーザーのパスワードを入力し、そのあとXアプリケーションをコマンドシェルから起動します。:
$ iceweasel または oocalc または oowriter または kspread などなど
ネットワーク接続のスピードが非常に遅い場合には何らかの圧縮を設定することでいくらかスピードを速くすることができますが、逆にスピードの速い接続では反対に圧縮によって遅くなります
$ ssh -C -X username@xxx.xxx.xxx.xxx (or IP)
Read:
$man ssh
ノート: もしsshが接続を拒否するエラーメッセージを表示する場合は、まず$HOMEディレクトリにいき、.ssh という隠れフォルダーに移動して、 known_hostsというファイルを削除して、もう一度試してください.この問題はよく、(DHCPにより)IPアドレスがダイナミックに変わるときによく起こります。
Copying files and directories remotely via ssh with scp
scp uses the command line, (terminal/cli), to copy files between hosts on a network. It uses ssh authentication and security for data transfer, therefore, scp will ask for passwords or passphrases as required for authentication.
Assuming you have ssh rights to a remote PC or a server, scp allows you to copy partitions, directories or file, to and from that PC, to a specified location or destination of your choosing where you also have permissions. For example, this could include a PC or server you have the permission to access on your LAN, (or anywhere else in the world), to enable a transfer of data to a USB hard Drive connected to your PC.
You can recursively copy entire partitions and directories with the scp -r option. Note that scp -r follows symbolic links encountered in the tree traversal.
Examples:
Example 1: Copy a partition:
scp -r <user>@xxx.xxx.x.xxx:/media/disk1part6/ /media/diskXpartX/
Example 2: Copy a directory on a partition, in this case a directory called photos in $HOME:
scp -r <user>@xxx.xxx.x.xxx:~/photos/ /media/diskXpartX/xx
Example 3: Copy a file from a directory on a partition, in this case a file in $HOME:
scp <user>@xxx.xxx.x.xxx:~/filename.txt /media/diskXpartX/xx
Example 4: Copy a file on a partition:
scp <user>@xxx.xxx.x.xxx:/media/disk1part6/filename.txt /media/diskXpartX/xx
Example 5: If you are already in the drive/directory that you wish to copy any directory or files to, use a ' . ' (dot) :
scp -r <user>@xxx.xxx.x.xxx:/media/disk1part6/filename.txt .
Example 6: To copy files from your PC/server to a another, (use scp -r if copying a partition or a directory):
scp /media/disk1part6/filename.txt <user>@xxx.xxx.x.xxx:/media/diskXpartX/xx
Read:
man scp
Windows-PCからSSHのリモートアクセスでXフォワーディング
* Cygwin XライブCDをダウンロードしてCDを作成する
* CDをWindows-PCのトレイに入れ自動実行プログラムのスタートを待つ。
シェルウィンドウが現れるまで"continue"を押し、現れたら:
ssh -X username@xxx.xxx.xxx.xxx
と入力する。
ノート: xxx.xxx.xxx.xxxの部分はLinuxのリモートPCのIPアドレスまたはURL(たとえばdyndns.orgなど)で、usernameのところにはもちろん実際にリモートPCにアカウントが存在するユーザー名を使います。 ログインに成功したら、たとえば"kmail"などをスタートして届いたメールのチェックもできます!
重要事項: 他のネットワークからのアクセスを許可する場合は/etr/hosts.allowの中にその項目を入れます。 もしあなたのコンピュータがルータやNAT-Firewallの後ろにある場合はポート22番があなたのコンピュータに転送される設定を確認しましょう。
Konqueror でGUIのSSH
KonquerorとKrusaderはどちらもSSHプロトコルを使ってsftp://でリモートデータにアクセスできます。
使い方:
1) 新しいKonquerorのウィンドウを開く
2) アドレスバーにsftp://username@ssh-server.comと入力します。
例 1:
sftp://aptosid1@remote_hostname_or_ip (注意: SSHのパスワードを聞くポップアップが現れます、入力してOKを押します)
例 2:
sftp://username:password@remote_hostname_or_ip
(このやり方だとパスワードを聞くポップアップは現れません。 直接データにアクセスします。)
LANの環境では
sftp://username@10.x.x.x or 198.x.x.x.x (注意: SSHのパスワードを聞くポップアップが現れます、入力してOKを押します)
KonquerorのSSHのGUIコネクションは初期化されます。 このKonquerorのウィンドウではSSHサーバーのファイルをローカルPCのファルダに入っているのとまったく同じ用に取扱い(コピーや閲覧など)できます。
注意: SSHのポート番号をデフォルトの22から変えた場合、ポート番号もsftp/fshが使えるように特定する必要があります:
sftp://user@ip:port
'user@ip:port'はsftp and smbなど、多くのプログラムがつかう標準いシンタックスです。
SSHFS - リモートマウント
SSFSはFUSEを使ってリモートファイルシステムをマウントする、手早く簡単でかつ安全な方法です。 サーバー側に必要なのはsshデーモンが走っていることだけです。
クライアント側にはsshfsをインストールする必要があるでしょう:
Eros以降のaptosidではfuseとグループはデフォルトでインストールされているため、わざわざインストールする必要はありません
apt-get update && apt-get install sshfs
一度ログアウトして、またログインしなおさなければ使えません
リモートシステムをマウントするのは簡単です:
sshfs username@remote_hostname:directory local_mount_point
ここでusername というのはリモートホスト上のアカウントです:
ディレクトリ名が省略された場合、リモートユーザーのホームディレクトリがマウントされます。 注意: ディレクトリ名が省略された場合でも : (コロン)は必要です!
一度マウントされたらリモートディレクトリはファイルを閲覧したり、編集したり、スクリプトを走らせたり、と普通のローカルディレクトリと同じように使えます。
アンマウントするには:
fusermount -u local_mount_point
sshfsを頻繁に使う場合はfstabに加えておいたほうがいいでしょう:
sshfs#username@remote_hostname://remote_directory /local_mount_point fuse user,allow_other,uid=1000,gid=1000,noauto,fsname=sshfs#username@remote_hostname://remote_directory 0 0
Next uncomment user_allow_other in /etc/fuse.conf:
# Allow non-root users to specify the 'allow_other' or 'allow_root' # mount options. # user_allow_other
これでfuseという名のグループに入っているユーザーならだれでも普通のmountコマンドでマウントできるようになります:
mount /path/to/mount/point
fstabにこの一行を加えた場合、アンマウントも普通のunmountコマンドが使えます:
umount /path/to/mount/point
fuseグループに入っているかどうかを調べるには:
cat /etc/group | grep fuse
次のような表示があるはずです:
fuse:x:117: <username>
ユーザー名がなかったらrootとしてadduserコマンドで追加できます:
adduser <username> fuse
これでユーザー名がfuseグループに入ったはずですから、次のコマンドが使えます:
注意: ユーザーのIDは一度ログオフしてログインしなおすまでfuseグループの一員として表示されません
mount local_mount_point
そして
umount local_mount_point