ssh小结

来源:互联网 发布:淘宝双11红包怎么使用 编辑:程序博客网 时间:2024/05/22 23:26

转自:http://www.cublog.cn/opera

以下都是针对OPENSSH:部分引用其他文章:)
一、安装与启动
1、查看是否安装openssh rpm –qa |grep ssh
  
如果看到有openssh的信息输出,就应该是安装了,如果没有,则可以在LINUX第二张安装光盘上找到RPM安装包(以OPENSSH开头的文件)。或者去www.openssh.com下载最新版安装。
2
、运行:
  
启动:service sshd start    停止:service sshd stop
  
自启动:chkconfig –level 235 sshd on
二、服务器端、客户端设置
1SSH服务器的配置文件是:/etc/ssh/sshd_config
设置选项中需要注意的有:设置时将以下各项前面的#号去掉
PermitRootLogin no
yes ;设为no,使root不能用ssh登录(推荐)。
PasswordAuthentication no
yes ;设为no,不允许密码方式登录,只能用密钥方式登录。
MaxStartups 10 
;允许同时连线数
Subsystem sftp /usr/libexec/openssh/sftp-server 
;允许使用SFTP
2
、限制ssh连接的ip地址:
编辑/etc/hosts.deny,例如加入以下这行就限制了192.168.9.33SSH来连接。
sshd : 192.168.9.33
当然也可以在IPTABLES中限制连接ip地址:基本方法
iptables -I INPUT -s ipaddress/mask --dport 22 -j DROP
3
、客户端设置(发起连接的一端)
配置文件在每个用户家目录下:例如/home/notes/.ssh下的config文件。如没有可以新建一个。
加入以下几行:
Host *1033
HostName 192.168.10.33
User notes
ForwardAgent yes
连接的时候可以用 ssh 1033 代替ssh notes@192.168.10.33
三、应用(以192.168.9.1192.168.9.2之间互相拷贝为例)
1
、文件拷贝(在192.168.9.1上操作)
scp
:远程复制文件
scp  user@192.168.9.2:/home/user/test /home/user/test
;指定用户名(user)将192.168.9.2/home/user/test文件拷贝到192.168.9.1/home/user/下。输入密码后拷贝文件。
scp  192.168.9.2:/home/user/test /home/user/test ;
作用与上面一样,只是用你当前登陆用户名去连接远程主机192.168.9.2
选项:-r拷贝整个目录  * 拷贝当前目录所有文件
sfp:
建立用SSH加密的安全的FTP连接通道,允许使用标准的ftp命令。
sfp user@192.168.9.2 
;输入密码后登陆,操作与FTP类似。
如果远程的服务器没有安装sftp服务器软件“sftpserv”,可以把“sftpserv”的可执行文件拷贝到你的远程的家目录中(或者在远程计算机的$PATH环境变量中设置的路径)。“sftp”会自动激活这个服务软件,你没有必要在远程服务器上有什么特殊的权限。
2
、用密钥登录
简化版
a
、先将服务器(192.168.9.2)改成只允许密钥登录,设置登录用户和密码:例如useradd sshtest ,passwd sshtest
b、在客户机上将要执行SSH登录的用户下执行:
ssh-keygen –t rsa;生成版本2的密钥;并为私钥id_rsa输入密码:例如 ssh123
生成的id_rsa权限应为600
将生成的id_rsa.pub拷贝到服务器的sshtest家目录的.ssh目录下,并改名为authorized_keys,其权限应为644
c、客户端用ssh -2 sshtest@192.168.9.2登录,会提示密钥密码,输入ssh123Ok
登录到多个服务器,将id_rsa.pub拷贝到多个服务器上即可。
一个服务器允许多个用户登录,将每个客户端产生的id_rsa.pub文件都拷贝到authorized_keys文件中。
复杂化版
2.1. 生成钥匙对
如果你不想每次使用 sshscp sftp 时都要输入口令来连接远程机器,你可以生成一对授权钥匙。
钥匙必须为每个用户生成。要为某用户生成钥匙,用想连接到远程机器的用户身份来遵循下面的步骤。如果你用根用户的身份完成了下列步骤,就只有根用户才能使用这对钥匙。
OpenSSH 版本 3.0 开始,~/.ssh/authorized_keys2~/.ssh/known_hosts2 /etc/ssh_known_hosts2 就会过时。SSH 协议 1 2 共享 ~/.ssh/authorized_keys~/.ssh/known_hosts /etc/ssh/ssh_known_hosts 文件。
Red Hat Linux 9
默认使用 SSH 协议 2 RSA 钥匙。
窍门
如果你重装了 Red Hat Linux,但是想保留现有的钥匙对,备份你的主目录中的 .ssh 目录。重装后,把该目录复制回主目录。该进程可为系统上的所有用户进行,包括根用户。

2.1.1.
为版本 2 生成 RSA 钥匙对
使用下列步骤来为 SSH 协议的版本 2 生成 RSA 钥匙对。从 OpenSSH 2.9 开始,它已成为默认设置。
   1.
要生成 RSA 钥匙对与协议的版本 2 合作,在 shell 提示下键入下列命令:
ssh-keygen -t rsa
      
接受 ~/.ssh/id_rsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。
      
公钥被写入 ~/.ssh/id_rsa.pub。密钥被写入 ~/.ssh/id_rsa。决不能把密钥出示给任何人。
   2.
使用 chmod 755 ~/.ssh 命令改变你的 .ssh 目录的许可权限。
   3.
~/.ssh/id_rsa.pub 的内容复制到你想连接的机器上的 ~/.ssh/authorized_keys 文件中。如果 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/id_rsa.pub 文件复制到那个机器上的 ~/.ssh/authorized_keys 文件中。
   4.
如果你运行的是 GNOME,跳到第 3.4.4 节。如果你没在运行 X 窗口系统,跳到第 3.4.5 节。

2.2.2.
为版本 2 生成 DSA 钥匙对
使用下面的步骤来为 SSH 协议的版本 2 生成 DSA 钥匙对。
   1.
要生成用于协议的版本 2 DSA 钥匙对,在 shell 提示下键入下面的命令:
ssh-keygen -t dsa
      
接受 ~/.ssh/id_dsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。
窍门
口令句是用来验证用户的一串词汇和字符。口令句和一般口令的不同之处在于:在口令句中你可以使用空格或制表符。口令句通常比一般口令长,因为它们通常使用短语而不仅仅用一个词。
      
公钥被写入 ~/.ssh/id_dsa.pub。密钥被写入 ~/.ssh/id_dsa。决不能把密钥出示给任何人,这一点很重要。
   2.
使用 chmod 755 ~/.ssh 命令改变你的 .ssh 目录的许可权限。
   3.
~/.ssh/id_dsa.pub 的内容复制到你想连接的机器中的 ~/.ssh/authorized_keys 文件中。如果文件 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/id_dsa.pub 文件复制到那个机器上的 ~/.ssh/authorized_keys文件中。
   4.
如果你运行的是 GNOME,跳到第 3.4.4 节。如果你没在运行 X 窗口系统,跳到 2.2.5 节。

2.2.3.
为版本 1.3 1.5 生成 DSA 钥匙对
使用下面的步骤来生成用于 SSH 协议版本 1 RSA 钥匙对。如果你只在使用 DSA 的系统间连接,则不需要 RSA 版本 1.3 RSA 版本 1.5 钥匙对。
   1.
要生成 RSA (版本 1.3 1.5 协议)钥匙对,在 shell 提示下键入下列命令:
ssh-keygen -t rsa1
      
接受默认的位置~/.ssh/identity)。输入和你的帐号口令不同的口令句。再输入一次来确认。
      
公钥被写入 ~/.ssh/identity.pub。密钥被写入 ~/.ssh/identity。不要把你的密钥出示给任何人。
   2.
使用 chmod 755 ~/.ssh chmod 644 ~/.ssh/identity.pub 命令改变你的 .ssh 目录和密钥的许可权限。
   3.
~/.ssh/identity.pub 的内容复制到你想连接的机器中的 ~/.ssh/authorized_keys 文件中。如果文件 ~/.ssh/authorized_keys 不存在,你可以把 ~/.ssh/identity.pub 文件复制到远程机器上的 ~/.ssh/authorized_keys 文件中。
   4.
如果你运行的是 GNOME,跳到第 3.4.4 节。如果你没在运行 GNOME跳到第 3.4.5 节。

2.2.4.
GNOME 中配置 ssh-agent
ssh-agent
工具可以用来保存你的口令句,因此你不必在每次引发 ssh scp 连接时都输入口令。如果你在使用 GNOMEopenssh-askpass-gnome 工具可以用来在你登录到 GNOME 时提示你输入口令句,并把它一直保留到你从 GNOME 中注销之时。你不必为本次 GNOME 会话中任何 ssh scp 连接输入口令或口令句。如果你不打算使用 GNOME,请参阅第 3.4.5 节。
要在 GNOME 会话中保存口令句,遵循下列步骤:
   1.
你需要安装 openssh-askpass-gnome 软件包;你可以使用 rpm -q openssh-askpass-gnome 命令来判定该软件包是否已被安装。如果它没有被安装,从你的 Red Hat Linux 光盘集合、Red Hat FTP 镜像站点、或使用 Red Hat 网络来安装它。
   2.
点击「主菜单」(在面板上)=>; 「首选项」 =>; 「更多首选项」 =>; 「会话」。然后点击「启动程序」标签。点击「增加」,在「启动命令」文本字段内输入 /usr/bin/ssh-add。把它的优先级设为比任何现存命令都高的数字以确保它最后才执行。ssh-add 的优先级数字最好是 70 或更高。优先级数字越高,优先级越低。如果你列出了其它程序,该程序的优先级应该最低。点击「关闭」来退出该程序。
   3.
注销后再登录进 GNOME;换一句话说,重新启动 X 服务器。在 GNOME 启动后,一个提示你输入口令句的对话框就会出现。输入要求的口令句。如果你把 DSA RSA 两者都配置了,你会被提示两者都输入。从现在起,你就不会被 ssh scp sftp 提示输入口令了。

2.2.5.
配置 ssh-agent
ssh-agent
可以用来储存你的口令句,因此你在每次使用 ssh scp 连接时就不必总是输入它。如果你不在运行 X 窗口系统,则在 shell 提示中遵循这些步骤。如果你在运行 GNOME,但是不想配置它来在你登录时提示你输入口令(参阅第 3.4.4 节),这个过程可以在类似 xterm 的终端窗口中进行。如果你在运行 X 却不是 GNOME,这个过程可以在终端中进行。可是,你的口令只能在该终端窗口中被记住,它不是全局设置。
   1.
shell 提示下,键入下面的命令:
exec /usr/bin/ssh-agent $SHELL
   2.
然后,键入下面的命令:
ssh-add
      
接着,输入你的口令。如果你配置了不止一个钥匙对,你会被提示输入每个口令。
   3.
当你注销后,口令句就会被忘记。你必须在每次登录到虚拟控制台或打开终端窗口时都执行这两条命令。

3、用SSH设置“加密通道”
加密通道的基础知识
SSH的“加密通道”是通过“端口转发”来实现的。你可以在本地端口(没有用到的)和在远程服务器上运行的某个服务的端口之间建立“加密通道”。然后只要连接到本地端口。所有对本地端口的请求都被SSH加密并且转发到远程服务器的端口。当然只有远程服务器上运行SSH服务器软件的时候“加密通道”才能工作。可以用下面命令检查一些远程服务器是否运行SSH服务:
telnet [full name of remote host] 22
如果收到这样的出错信息:
telnet: Unable to connect to remote host: Connection refused
就说明远程服务器上没有运行SSH服务软件。
端口转发使用这样的命令语法:
ssh -f [username@remote host] -L [local port]:[full name of remote host]:[remote port] [some command]
你不仅可以转发多个端口而且可以在“~/.ssh/config”文件中用“LocalForward”设置经常使用的一些转发端口。
POP加上加密通道
你可以用POP协议从服务器上取email。为POP加上“加密通道”可以防止POP的密码被网络监听器(sniffer)监听到。还有一个好处就是SSH的压缩方式可以让邮件传输得更快。
假定你在pop.foobar.com上有一个POP帐号,你的用户名是“bilbo”你的POP口令是“topsecret”。用来建立SSH“加密通道”的命令是:
ssh -f -C bilbo@pop.foobar.com -L 1234:pop.foobar.com:110 sleep 5
(如果要测试,可以把“sleep”的值加到500)。运行这个命令之后会提示你输入POP口令:
bilbo@pop.foobar.com's password:
输入口令之后就可以用“telnet”连接到本地的转发端口了。
telnet localhost 1234
你会收到远程mail服务器的“READY”消息。
当然,这个方法要求你手工输入所有的POP命令,这是很不方便的。可以用Fetchmail(参考how to configure Fetchmail)。Secure POP via SSH mini-HOWTOman fetchmail和在“/usr/doc/fetchmail-[…]”目录下的FetchmailFAQ都提供了一些具体的例子。
请注意IMAP协议使用的是不同的端口:IMAP v2的端口号为143IMAP v3的端口号为220
X加上加密通道
如果你打算在本地计算机上运行远程SSH服务器上的X程序,那么登录到远程的计算机上,创建一个名为“~/.ssh/environment”的文件并加上这一行:
XAUTHORITY=/home/[remote user name]/.Xauthority
(如果在远程主机上你的家目录下不存在“.Xauthority”这个文件,那么当用SSH登录的时候就会自动创建)。
比如启动一个X程序(xterm)可以这个命令:
ssh -f -X -l [remote user name] [remote machine] xterm
这将在远程运行xterm这个程序。其它的X程序也是用相同的方法。
linuxconf加上加密通道
LinuxconfLinux的配置工具,它支持远程管理。LinuxconfFAQ重说明了如何通过SSH使用linuxconf
其命令为:
remadmin --exec [link_command] linuxconf --guiproto
如果你想在两台计算机之间用加密的方式传送信息,那么最好用ssh。命令是:
remadmin --exec ssh -l [account] linuxconf --guiproto
这是非常有效的而且运行用图形界面管理计算机。
这种方法需要在客户端安装linuxconf。其它的方法还有直接登录到服务器上用“X11Forwarding”或字符界面运行linuxconf
Webmin加上加密通道
Webmin是一个新的基于浏览器的配置工具。它运行在1000端口。你可以用SSH的“端口转发”对它进行加密:
ssh -f -l [remote user name] [remote host] -L 1234:[remote host]:10000 tail -f /etc/motd
把浏览器指向
http://localhost:1234