April 22nd, 2010ssh远程访问Linux
ssh经常用来作远程系统管理,下面是使用方法的一个参考(注:SSH是一种协议)
OpenSSH (Secure Shell), 包含一组安全传输程序:scp(secure copy),ssh(Secure Shell),sftp(SSH file transfer protocol).
使用别名简化访问
$ssh saturn
编辑~/.ssh/config文件如下:
Host saturn
HostName saturn.test.com
user valorie
用另一个用户连接:
$ ssh -l user2 saturn
主机密钥保存在/etc/ssh. 用来验证远程登录用户身份,这是唯一需要远程用户访问的目录。他们说需要的只是存放于本地机器~/.ssh/known_hosts目录的公钥拷贝.
生成新的主机密钥
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
密钥的名字是随意的,但需要随后在/etc/ssh/sshd.config作配置
第一次连接远程主机
$scp ~/.ssh/id_rsa.pub valorie@saturn:.ssh/authorized_keys
注:密钥必须是一个长的未截断行,你可以存放任意多密钥
保护密钥:公共密钥是可访问但是只有属主可写的 (mode 644). 私有密钥只能属主可读写 (mode 600),一定不要公开私有密钥。
当创建了非默认名字的密钥对后,你需要修改私有密钥对应的名字到 ~/.ssh/ssh_config
如下:IdentityFile ~/.ssh/ftp_key
Windows下使用Poderosa(Cygwin前端)访问:
配置文件存放在C:\cygwin\etc\ssh_config
ssh-agent:
启动ssh-agent:
$ shh-agent bash
运行ssh-add载入~/.ssh目录的所有密钥:
$ ssh-add
其他命令
$ ssh-add -l #查看载入结果
$ ssh-add /home/jenn/adminkeys/id_rsa_http #载入指定位置密钥
$ ssh-add -d /home/jenn/.ssh/id_dsa #从当前活动会话删除密钥(并不是真的删除)
$ ssh-add -D #删除所有会话密钥
keychain
优点:更长的生命周期(直至重启机器)&可以cron
http://www.gentoo.org/proj/en/keychain/index.xml
编辑本地文件 ~/.bash_profile, 添加:
keychain id_dsa apache_key ftp_key
. ~/.keychain/$HOSTNAME-sh #
cron定期执行
#!/bin/bash
source /home/saz/.keychain/$HOSTNAME-sh
rsync -a -e ssh –delete –force rsync.test.net::home/saz/ /backups/saz
修改 ~/.bash_logout并添加:
kill $SSH_AGENT_PID
如果没有 ~/.bash_logout文件, 基于/etc/skel/.bash_logout创建一个.
配置窗口远程登录
修改SSH server的/etc/ssh/sshd_config文件:
X11Forwarding yes
连接远程服务器:
$ ssh -X saturn.test.net
验证X forwarding是否工作:
$ echo $DISPLAY
安全选项:确保本地 ~/.Xauthority文件权限是600和/etc/ssh/ssh_config文件配置正确:
Host *
ForwardX11 no
ForwardAgent no
摘自 <Linux Cookbook>Chap.17
参考文章
通 过 OpenSSH 设置 UNIX 远程访问
OpenSSH 密钥管理