SSH是 Secure Shell Protocol的缩写,OpenSSH 是 SSH 协议的免费开源实现.
OpenSSH包含服务端程序和客户端工具,用来加密远程控件和文件传输过程中的数据。因此该工具可以帮助我们在互联网上安全地访问远程服务器,因为SSH的所有连接都是加密的。OpenSSH提供了安全隧道功能和多种身份验证方法,支持SSH协议的所有版本。下面列举了使用SSH常用的操作
1、使用SSH连接远程主机
ssh user@remotehost
2、SSH连接到其他端口
ssh默认是22号端口,可使用-p选项进行制定
ssh -p 1000 user@remotehost
3、使用SSH在远程主机上执行一条命令,并将结果显示在本地
ssh user@remorehost ls -l /home
4、在远程主机上运行一个图形界面程序
ssh -X user@remotehost
5、绑定源地址
如果客户端主机有多个 IP 地址,为了分清楚在使用哪一个 IP 连接到 SSH 服务器,我们可以使用 -b 选项来指定一个IP 地址。这个 IP 将会被使用做建立连接的源地址
ssh -b 192.168.100.100 user@remotehost
6、打开调试模式
当我们连接出错的时候,可以开启调试模式,追踪调试我们建立的 SSH 连接情况。从而可以看到在哪个环节出了问题。
ssh -v user@remotehost
7、复制SSH密钥到目标主机,是实现开启无密码SSH登录
ssh-copy-id user@remotehost
该命令表示,将当前执行该命令的主机的公钥复制到remotehost主机的authorized_keys文件上。
如果当前主机还没有密钥,可以使用ssh-keygen命令生成。
8、通过中间主机建立SSH连接
ssh -t reachable_host ssh unreachable_host
unreachable_host表示从当前主机无法直接访问的主机,但是可以通过reachable_host来建立连接。即当前主机可以访问到reachable_host主机,reachable_host又可以访问到unreachable_host主机。
9、创建到目标主机的持久化连接
ssh -MNf <user>@<remotehost>
该命令会在后台创建到目标主机的持久化连接,将这个命令和你~/.ssh/config中的配置结合使用:
Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no
所有到目标主机的SSH连接都将使用持久化SSH套接字,如果你使用SSH定期同步文件(使用rsync/sftp/cvs/svn),这个命令将非常有用,因为每次打开一个SSH连接时不会创建新的套接字。
10、通过SSH连接屏幕
ssh -t remotehost screen –r
直接连接到远程屏幕会话(不会创建父bash进程)。
11、待添加。。。。。
SSH配置文件*(/etc/ssh/sshd_config)中各个参数的说明:
Tables | Are |
Port | “Port”设置sshd监听的端口号 |
ListenAddress 192.168.1.1 | “ListenAddress”设置sshd服务器绑定的IP地址。 |
HostKey /etc/ssh/ssh_host_key | “HostKey”设置包含计算机私人密匙的文件。 |
ServerKeyBits 1024 | “ServerKeyBits”定义服务器密匙的位数。 |
LoginGraceTime 600 | “LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。 |
ClientAliveInterval 300(默认为0) | 这个参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持连接 |
KeyRegenerationInterval 3600 | “KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。 |
PermitRootLogin no | “PermitRootLogin”设置root能不能用ssh登录。这个选项一定不要设成“yes”。 |
IgnoreRhosts yes | “IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。 |
IgnoreUserKnownHosts yes | “IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts” |
StrictModes yes | “StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。 |
X11Forwarding no | “X11Forwarding”设置是否允许X11转发。 |
PrintMotd yes | “PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。 |
SyslogFacility AUTH | “SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility pre”。 |
LogLevel INFO | “LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。 |
RhostsAuthentication no | “RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。 |
RhostsRSAAuthentication no | “RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。 |
RSAAuthentication yes | “RSAAuthentication”设置是否允许只有RSA安全验证。 |
PasswordAuthentication yes | “PasswordAuthentication”设置是否允许口令验证。 |
PermitEmptyPasswords no | “PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。 |