📄 0310telnetssh.htm
字号:
<br> <ol><li><font color="#000066">一个就是类似 telnet 的远程联机使用 shell 的服务器,亦即是俗称的ssh ;</font></li><li><font color="#000066">另一个就是类似 FTP 服务的 sftp-server !提供更安全的FTP 服务。</font></li></ol> <br><hr width="100%"><a name="ssh_connect"></a><font size="+1" color="#000099">联机加密技术简介:</font><br> <br>基本上,加密的技术通常是藉由所谓的『<font color="#000066">一对公钥与私钥</font>』亦即『<font color="#000066">Publicand Private keys</font>』来进行加密与解密的动作!如下图所示,当 SSH 服务器主机启动该服务之后,主机端会产生一支公钥,而身为个人计算机的您( client 端 ),在进行与 server 的联机时,可以藉由 Client 端随机自行产生的私钥来提供server 的联机之用,也可以直接藉由 server 提供的私钥来进行联机!这个与进行联机时选择的加密版本有关,等一下我们再提!<center> <br><img src="0310telnetssh_files/0310telnetssh-1.jpg" nosave="" height="79" width="439"></center> <br>在上面的图示中,我们可以知道,当资料由 Server 端传送到 Client 端时,这些数据会先经过『公钥,Public Key』来进行加密的行为,所以,在传输的过程中,这些数据本身是经过加密的,因此,即使这些数据在途中被截取时,要破解这些加密的数据,还是得要花费上好长一段时间的。那么等这些经过公钥加密的数据传送到Client 端之后,就可以藉由所谓的『私钥, Private Key』来进行解密的动作。需要注意的是,这些公钥与私钥在每一部计算机上面都不一样,所以,您与Server 的联机对其他人来说,都是很难去破解的呢!那么这些公钥与私钥是如何产生的呢?底下我们来谈一谈目前SSH 的两种版本的联机模式啰!</ol><ul><ul><li><b><font color="#000066">SSH protocol version 1</font></b>:</li><br>每一部主机都可以使用 RSA 加密方式来产生一个 1024-bit 的 RSA Key ,这个RSA 的加密方式,主要就是用来产生公钥与私钥的演算方法!这个 version 1 的整个联机的加密步骤可以简单的这么看:<ol><li>当每次 SSH daemon (sshd) 启动时,就会产生一支 768-bit 的公钥(或称为 serverkey)存放在 Server 中;</li><li>若有 client 端的需求传送来时,那么 Server 就会将这一支公钥传给 client ,而Client 藉由比对本身的 RSA 加密方式来确认这一支公钥;</li><li>在 Client 接受这个 768-bit 的 server key 之后,Client 自己也会随机产生一支256-bit 的私钥(host key),并且以加密的方式将 server key 与 host key 整合成一支完整的Key ,并且将这支 Key 也传送给 server ;</li><li>之后,Server 与 Client 在这次的联机当中,就以这一支 1024-bit 的 Key 来进行数据的传递!</li></ol>当然啦,因为 Client 端每次的 256-bit 的 Key 是随机取的,所以您这次的联机与下次的联机的Key 可能就会不一样啦!<br> <li><b><font color="#000066">SSH protocol version 2:</font></b></li><br>与 version 1 不同的是,在 version 2 当中将不再产生 server key 了,所以,当Client 端联机到 Server 端时,两者将藉由 Diffie-Hellman key 的演算方式来产生一个分享的Key ,之后两者将藉由类似 Blowfish 的演算方式进行同步解密的动作!</ul> <br>每一个 sshd 都提供这两个版本的联机,而决定这两种模式联机的,就必需要在client 端联机时选择联机的模式才能确认。目前预设情况下,会自动使用 version2 的联机模式喔!而由于我们的联机数据中,经过了这个 Public 与 Private Key的加密、解密动作,所以在中间的传送过程中,当然就比较安全的多啰!(<i><font color="#000066">注:目前使用SSH 来联机时,比较建议使用 version 2 的算法喔!</font></i>)<br> <br><hr width="100%"><a name="ssh_start"></a><font size="+1" color="#000099">启动ssh 服务:</font><br> <br>事实上,在我们使用的 Linux 系统当中,预设就已经含有 SSH 的所有需要的套件了!这包含了可以产生密码等协议的<a href="http://www.openssl.org/" target="_blank">OpenSSL</a>套件与 <a href="http://www.openssh.com/" target="_blank">OpenSSH</a> 套件,所以呢,要启动SSH 真的是太简单了!就直接给他启动就是了!此外,在目前的 Linux Distributions当中,都是预设启动 SSH 的,所以一点都不麻烦,因为不用去设定,他就已经启动了!哇!真是爽快~无论如何,我们还是得说一说这个启动的方式吧!直接启动就是以SSH daemon ,简称为 sshd 来启动的,所以,手动可以这样启动:<br> <table border="1" cols="1" width="550"><tbody><tr><td bgcolor="#000000"><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> /etc/rc.d/init.d/sshd start</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> service sshd start</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]#</font><font color="#ffff00"> netstat -tl</font></font><br><font size="-1" color="#ffffff" face="SimSun">Active Internetconnections (only servers)</font><br><font size="-1" color="#ffffff" face="SimSun">Proto Recv-QSend-Q Local Address          Foreign Address         State</font><br><i><font size="-1" color="#ffff00" face="SimSun">tcp       0      0 *:ssh                  *:*                    LISTEN</font></i></td></tr></tbody></table> <br>上面两种方式都可以直接手动启动 sshd 这个服务!然后使用 <a href="http://linux.vbird.org/linux_server/0140networkcommand.php#netstat">netstat</a>-tl 看看能不能看到 ssh 的服务在监听呢!?如果出现了上面那一行斜体字,就表示您的SSH 已经正确的启动啰!这真是太简单了吧!没错,但是他就是这么简单~<br> <br>那么我要如何在开机的时候就启动这个 sshd 呢?如果是 Red Hat 的系统,可以使用<a href="http://linux.vbird.org/linux_basic/0550setup.php#ntsysv">ntsysv</a>这支程序,而 Mandrake 可以使用<a href="http://linux.vbird.org/linux_basic/0550setup.php#chkconfig">chkconfig</a>这个程序!至于 OpenLinux 则可以到 /etc/sysconfig/daemons 去看看喔!<br> <br>这个方式仅适合在已经有 OpenSSH 的 Linux Distributions 当中,如果以Red Hat 6.x 为例,他并没有预设使用 SSH 怎么办?别担心,可以参考一下底下这个鸟哥之前写过的网页,有详细的说明使用tarball 安装的步骤呢!</ul><ul><a href="http://linux.vbird.org/linux_server/0310telnetssh-2.php">使用 Tarbal 安装 SSH 以及升级 SSH 可能会遇到的问题说明</a><br><a href="http://linux.vbird.org/linux_server/0310telnetssh-2.php">(http://linux.vbird.org/linux_server/0310telnetssh-2.php)</a></ul><ul>需要注意的是, SSH 不但提供了 shell 给我们使用,亦即是 ssh protocol的主要目的,同时亦提供了一个较为安全的 FTP server ,亦即是 ssh-ftp server给我们当成是 FTP 来使用!所以,<font color="#000066">这个 sshd 可以同时提供shell 与 ftp 喔!而且都是架构在 port 22 上面的呢</font>!所以,底下我们就来提一提,那么怎么样由Client 端连接上 Server 端呢?同时,如何以 FTP 的服务来连接上 Server 并且使用FTP 的功能呢?<br> <br><hr width="100%"><a name="ssh_client"></a><font size="+1" color="#000099">ssh客户端联机:</font><br> <br>由于 Linux 与 Windows 这两个客户端的 Client 联机软件并不一样,所以我们分为两个部分来说明:</ul><ul><ul><li><b><font color="#000066">Linux 客户端</font>:</b><font size="+1" color="#000099">ssh</font></li><br>在 Linux 客户端方面,我们主要以 ssh 进行一般联机,而以 sftp 进行 FTP的使用联机!分别简介如下:<br> <table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><a name="ssh_ssh"></a><font size="-1" color="#ffffcc" face="SimSun">ssh一般联机的使用方式:</font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">ssh user@hostname</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">ssh -l test test.linux.org</font></font><br><font size="-1" color="#ffffff" face="SimSun">Connectingto test.linux.org...</font><br><font size="-1" color="#ffffff" face="SimSun">The authenticityof host 'test.linux.org (192.168.1.100)' can't be established.</font><br><font size="-1" color="#ffffff" face="SimSun">RSA key fingerprintis 46:cf:06:6a:ad:ba:e2:85:cc:d9:c4:8d:15:bb:f3:ec.</font><br><font size="-1" face="SimSun"><font color="#ffffff">Are you sureyou want to continue connecting (yes/no)? </font><font color="#ffff00">yes</font><font color="#ff6666"><==请输入 yes !</font></font><br><font size="-1" color="#ffffff" face="SimSun">Warning: Permanentlyadded 'test.linux.org,192.168.1.100' (RSA) to the list of known hosts.</font><br><font size="-1" face="SimSun"><font color="#ffffff">test@test.linux.org'spassword:   </font><font color="#ff6666"> <==请输入 test这个使用者的密码!</font></font></td></tr></tbody></table> <br>这里请特别留意的是,如果直接以『 ssh hostname 』这个指令来连接进入hostname 这个主机时,则进入 hostname 这个主机的『账号名称』将会是目前您所在的这个环境当中的使用者账号!以上面为例,因为我是以root 的身份在执行,所以如果我执行了『 ssh host.domain.name 』时,那么对方host.domain.name 这部主机,就会以 root 的身份来让我进行密码确认的登入动作!因此,为了避免这样的麻烦,通常我都是以简单的e-mail 的写法来登入远方的主机,例如『<font color="#000066" face="SimSun">sshuser@hostname </font>』即表示,我是以 user 这个账号去登入 hostname这部主机的意思。当然,也可以使用 -l username 这样的形式来书写!登入对方主机之后,其它的所有执行行为都跟在Linux 主机内没有两样~所以,真的是很简单吧! ^_^ 这样就可以达到远程控管主机的目的了!此外,<font color="#000066">在预设的情况下,SSH 是『允许您以 root 的身份登入』喔</font>!呵呵!更是爽快啦!此外,请特别留意的是,当您要连接到对方的主机时,如果是首次连接,那么Server 会问您,您的联机的 Key 尚未被建立,要不要接受 Server 传来的 Key,并建立起联机呢?呵呵!这个时候请『<font color="#000066">务必要输入 yes而不是 y 或 Y</font>』,这样程序才会接受喔!<br> <br>除此之外,因为 ssh 这支程序预设会将主机端的 public key 记录下来,放置在/home/youraccount/.ssh/known_hosts 当中,以利未来的联机之用。不过,由我们刚刚对于联机加密机制的探讨当中,可以发现在SSH 主机重新开机之后,那个 Public Key 会自动的更新,所以,当您的 SSH 主机经过重新开机,而您的Client 再以 ssh 这支程序联机时,就会发现如下的错误喔:<br> <table bgcolor="#000000" border="1" cols="1" width="600"><tbody><tr><td><font size="-1" face="SimSun"><font color="#ffffff">[root@testroot]# </font><font color="#ffff00">ssh user@hostname</font></font><br><font size="-1" color="#ffffff" face="SimSun">@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@</font><br><font size="-1" color="#ffffff" face="SimSun">@   WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!    @</font><br><font size="-1" color="#ffffff" face="SimSun">@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@</font><br><font size="-1" color="#ffffff" face="SimSun">IT IS POSSIBLETHAT SOMEONE IS DOING SOMETHING NASTY!</font><br><font size="-1" color="#ffffff" face="SimSun">Someone couldbe eavesdropping on you right now (man-in-the-middle attack)!</font><br><font size="-1" color="#ffffff" face="SimSun">It is alsopossible that the RSA host key has just been changed.</font><br><font size="-1" color="#ffffff" face="SimSun">The fingerprintfor the RSA key sent by the remote host is</font><br><font size="-1" color="#ffffff" face="SimSun">6e:1a:60:d0:ee:d0:7c:91:df:94:de:09:35:7b:08:ba.</font><br><font size="-1" color="#ffffff" face="SimSun">Please contactyour system administrator.</font><br><font size="-1" color="#ffffff" face="SimSun">Add correcthost key in /root/.ssh/known_hosts to get rid of this message.</font><br><font size="-1" color="#ffffff" face="SimSun">Offending keyin /root/.ssh/known_hosts:8</font><br><font size="-1" color="#ffffff" face="SimSun">RSA host keyfor hostname has changed and you have requested strict checking.</font><br><font size="-1" color="#ffffff" face="SimSun">Host key verificationfailed.</font></td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -