SSH远程控制

    技术2022-05-18  10

    什么是SSH

    简而言之,sshlinux提供了远程shell机制。以AB两台机器为例,ssh可以A机器可以通过ssh 调动B机器中的shell程序处理事务。ssh除了提供远程shell调用之外,还提供了ftp功能,用于主机间的文件传递。

    实际上,telnetftp也具备与ssh相似的功能,但telnetftp在主机互联过程中,所传递的数据是不加密的,很容易被第三方窃取。ssh可对主机间所传送的数据进行加密,具有较高的安全性。因此,不推荐使用telnetftp

    启动SSH服务

    ssh是由客户端与服务器端组成。在使用ssh服务前,首先确认你的Linux系统中是否已经安装ssh(各发行版都有其相应的软件包管理工具可以使用),并使用以下命令查看服务器端(就是你想远程登录的那台机器)是否已经启动:

    # > netstat -tlActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State      ……    tcp        0      0 *:ssh                   *:*                     LISTEN      ……

    netstat是网络查询命令,其参数“-t”是显示tcp数据包的连接行为,参数“-l”是显示监听状态。如果"netstat -tl"输出结果如上面代码所示,则说明服务器端ssh服务已启动。

    如果ssh服务未启动,需要手动启动,方法:在/etc/init.d目录下,寻找“ssh”“sshd”文件,如果找到,执行以下命令:

    # cd /etc/init.d# ./ssh start

    有些Linux发行版的“init.d”目录不一定在“/etc”下,视具体版本而定了。

    如果想开机时就自动启动ssh服务,在gentoo下可以:

    # rc-update add /etc/init.d/ssh default

    其它Linux发行版,也有其自己的设定方法,如不清楚,可根据具体发行版本,google而定。

    ssh 一般连接

    比如我所在的机器IP“192.168.0.22”,我想sshIP“192.168.0.2”机器,并以该机器上的用户“m2”进行一些操作,实现步骤如下:

    $ ssh m2@192.168.0.2The authenticity of host '192.168.0.2 (192.168.0.2)' can't be established.RSA key fingerprint is 83:a0:ed:c8:db:18:b4:23:28:9b:e8:0d:e3:fd:96:91.Are you sure you want to continue connecting (yes/no)? yes              <==在此请输入“yes”Warning: Permanently added '192.168.0.88' (RSA) to the list of known hosts.m2@192.168.0.2's password:              <==请输入用户m2在机器192.168.0.2上的密码后,就进入了该机器[m2@ ~]$

    进入m2@192.168.0.2后,就可以调用该机器的shell功能了。要是想退出中断ssh的连接,键入“exit”即可。使用sftp登录远程主机的步骤与ssh类似。

    ssh 高级连接

    按照ssh一般连接的操作步骤,每次登录远程主机都要重复输入主机端用户密码,过于繁琐。可以利用ssh提供的身份验证机制避免重复输入主机端用户密码操作。这里捎带着讲一下远程连接加密的机理。

    ssh服务器端启动后,会产生一个公钥(实际上就是一组数)。当ssh客户端向ssh服务器端发送连接请求时,通常ssh服务器端会反馈给ssh客户端一个私钥。在建立起通信连接后,数据发送方可以根据自己所掌握的密钥对所传送的数据进行加密,接受数据的一方可以使用自己所掌握的密钥对数据进行解密。数据的加密与解密,实际上就是公钥与私钥的匹配。

    ssh提供的主机与客户端之间的身份验证机制也是利用了ssh服务器端的公钥与ssh客户端的私钥进行匹配实现的,具体实现步骤如下:

    #在客户端生成公钥(Public Key)与私钥(Private Key),下面这行命令中的rsa选项参数表示采用rsa加密算法来生成密钥$ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/home/silent/.ssh/id_rsa): <==这里直接回车Enter passphrase (empty for no passphrase): <==这里直接回车Enter same passphrase agin: <==这里直接回车 Your identification has been saved in /home/silent/.ssh/id_rsa  <==这是私钥Your public key has been saved in /home/silent/.ssh/id_rsa.pub  <==这是公钥

     

    将私钥保留在默认生成目录下,使用sftp,将公钥复制到ssh服务器相应用户的主目录下,比如IP“192.168.0.2”机器上的m2用户“/home/m2”目录:

    $ sftp m2@192.168.0.2输入密码:

    sftp > put /home/silent/.ssh/id_rsa_pubsftp > exit

     

    然后,使用ssh一般连接到ssh服务器端,执行以下操作,:

    $ cd /home/m2/.ssh$ cat ../id_rsa_pub >> authorized_keys

    进行完以上各步之后,在ssh客户端机器上就可以无需输入密码,直接登录m2@192.168.0.2

    $ ssh m2@192.168.0.2


    最新回复(0)