[⽹络安全]SSH密钥公钥及部分参数解析
公钥登录
每次登陆远程主机都需要输⼊密码,很不⽅便,可以利⽤密钥对进⾏连接,还可以提⾼安全性
在本机⽣成密钥对
ssh-keygen -t rsa
t 表⽰类型选项,这⾥采⽤rsa算法加密
将公钥复制到远程主机中
使⽤ssh-copy-id命令将公钥复制到远程主机
ssh-copy-id会将公钥写到远程主机的 ~/ .ssh/authorized_key ⽂件中
ssh-copy-id ldz@192.168.0.1
从此登录此电脑
就不需要输⼊密码了
远程主机将⽤户的公钥,保存在登录后的⽤户主⽬录的$HOME/.ssh/authorized_keys⽂件中。公钥就是⼀段字符串,只要把它追加在authorized_keys⽂件的末尾就⾏了。
改⽤下⾯的命令,解释公钥的保存过程:
$ ssh user@host ‘mkdir -p .ssh && cat >> .ssh/authorized_keys’ < ~/.ssh/id_rsa.pub
(1)"$ ssh user@host",表⽰登录远程主机;
(2)单引号中的mkdir .ssh && cat >> .ssh/authorized_keys,表⽰登录后在远程shell上执⾏的命令:
(3)"$ mkdir -p .ssh"的作⽤是,如果⽤户主⽬录中的.ssh⽬录不存在,就创建⼀个;
(4)‘cat >> .ssh/authorized_keys’ < /.ssh/id_rsa.pub,重定向追加到远程⽂件
/.ssh/id_rsa.pub的作⽤是,将本地的公钥⽂件
authorized_keys的末尾。
写⼊authorized_keys⽂件后,公钥登录的设置就完成了
将$HOME/src/⽬录下⾯的所有⽂件,复制到远程主机的$HOME/src/⽬录:
$ cd && tar czv src | ssh username@ip ‘tar zx src’
将远程主机$HOME/src/⽬录下⾯的所有⽂件,复制到⽤户的当前⽬录
$ ssh username@ip ‘tar czv’ ssh | tar xzv
查看远程主机是否运⾏进程httpd
$ ssh username@ip ‘ps au | grep [h]ttpd’
绑定本地端⼝
既然SSH可以传送数据,那么我们可以让那些不加密的⽹络连接,全部改⾛SSH连接,从⽽提⾼安全性
$ ssh -D port username@ip
SSH会建⽴⼀个socket,去监听本地的[:port]端⼝
⼀旦有数据传向那个端⼝,就⾃动把它转移到SSH连接上⾯,发往远程主机
那么该端⼝原来是⼀个不加密端⼝,现在将变成⼀个加密端⼝
本地端⼝转发
有时,绑定本地端⼝还不够,还必须指定数据传送的⽬标主机,从⽽形成点对点的"端⼝转发"
假定host1是本地主机,host2是远程主机,这两台主机之间⽆法连通。
但是,另外还有⼀台host3,可以同时连通前⾯两台主机
因此,很⾃然的想法就是,通过host3,将host1连上host2。
在host1执⾏下⾯的命令:
$ ssh -L 2121:host2:21 host3
命令中的L参数⼀共接受三个值,分别是"本地端⼝:⽬标主机:⽬标主机端⼝",它们之间⽤冒号分隔。
这条命令的意思,就是指定SSH绑定本地端⼝2121,然后指定host3将所有的数据,转发到⽬标主机host2的21端⼝(假定host2运⾏FTP,默认端⼝为21)
这样⼀来,我们只要连接host1的2121端⼝,就等于连上了host2的21端⼝。
  $ ftp localhost:2121
“本地端⼝转发"使得host1和host3之间仿佛形成⼀个数据传输的秘密隧道,因此⼜被称为"SSH隧道”。
实例1:
$ ssh -L 5900:localhost:5900 host3
它表⽰将本机的5900端⼝绑定host3的5900端⼝(这⾥的localhost指的是host3,因为⽬标主机是相对host3⽽⾔的)。
实例2:
$ ssh -L 9001:host2:22 host3
这时,只要ssh登录本机的9001端⼝,就相当于登录host2了。
  $ ssh -p 9001 localhost
远程端⼝转发
host1与host2之间⽆法连通,必须借助host3转发
⽽host3是⼀台内⽹机器,它可以连接外⽹的host1,但是反过来就不⾏,外⽹的host1连不上内⽹的host3
这时,"本地端⼝转发"就不能⽤了
解决办法:
既然host3可以连host1,那么就从host3上建⽴与host1的SSH连接,然后在host1上使⽤这条连接就可以了
我们在host3执⾏下⾯的命令:
  $ ssh -R 2121:host2:21 host1
R参数也是接受三个值,分别是"远程主机端⼝:⽬标主机:⽬标主机端⼝"
这条命令的意思,就是让host1监听它⾃⼰的2121端⼝,然后将所有数据经由host3,转发到host2的21端⼝。由于对于host3来
说,host1是远程主机,所以这种情况就被称为"远程端⼝绑定"。
绑定之后,我们在host1就可以连接host2了:
  $ ftp localhost:2121
这⾥必须指出,"远程端⼝转发"的前提条件是,host1和host3两台主机都有sshD和ssh客户端。
SSH的其他参数
N参数,表⽰只连接远程主机,不打开远程shell;
T参数,表⽰不为这个连接分配TTY。
这个两个参数可以放在⼀起⽤,代表这个SSH连接只⽤来传数据,不执⾏远程操作。
  $ ssh -NT -D 8080 host
f参数,表⽰SSH连接成功后,转⼊后台运⾏。这样⼀来,你就可以在不中断SSH连接的情况下,在本地shell中执⾏其他操作。
  $ ssh -f -D 8080 host
重定向过多是什么意思
注意:要关闭这个后台连接,就只有⽤kill命令去杀掉进程。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。