欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 16_04 _Linux系统裁减之六 为系统添加ssh服务 有大用

私钥是给自己使用的(本地使用私钥) (私钥是解锁,解密,解钥)(且私钥签名) ;;; 公钥是给别人使用的(远程服务端使用公钥) (公钥是加密,加钥,加锁)(且公钥验证)



telnet:远程登录协议, 应用层协议 23/tcp  默认端口 23

    C/S

    S: 服务器端, telnet服务器

    C: (远程拔号工具,远程连接工具)telnet客户端

早期远程登录都是使用telnet服务来实现的 命令和论证过程都是明文发送的,不安全


ssh: Secure  SHell   安全的shell    应用层协议 , 22/tcp   默认端口 22

通信过程及认证过程都是加密的,还能实现  主机认证

        1)主机要认证

        2)用户认证过程加密

        3)数据传输过程也加密


ssh v1,v2 两个版本 (version 1 ,和 version 2 )

    ssh v1 版已经不太安全了,已经能够被破解了,尤其无法避免中间人(man in middle)攻击


sshv2 (因此建议使用sshv2的版本)

认证过程:

    基于口令的认证:(主机认证)(主机密钥)(客户端要通过用户名密码才能连接) (认证的是服务端的主机,认证的是双方主机)

    基于密钥的认证:(用户认证)(用户密钥)(客户端再生成公私钥)


协议:规范,

实现:服务器端和客户端


linux: openSSH

     开源的 ssh 软件

    C/S架构

            服务器端:sshd,    配置文件(在红帽上) /etc/ssh/sshd_config

            客户端: ssh,    配置文件(在红帽上) /etc/ssh/ssh_config

                    客户端不仅有ssh

                    还有 ssh-keygen (ssh key generation) 密钥生成器

                            ssh-copy-id 将公钥传输至远程服务器的,而且能够保存在用户的家目录下的特定文件里面

                            scp  (ssh copy) 它能够在两台主机之间复制数据,而且数据传输的时候是加密的   跨主机安全复制工具


客户端  ssh:  

            ssh HOST  (第一种方法 如果是linux ,默认当前客户端的用户名)

            ssh USERNAME@HOST ( ssh -l USERNAME HOST ) ( -l 就是 login_name) (第二种方法 使用某用户名进行登录远程服务端)


可以不用登录到远程主机,却可以执行远程主机的命令  (命令的执行结果在本地客户端显示,

这些命令的发送和结果的回送过程都是加密的)

ssh USERNAME@HOST 'COMMAND'


客户端  scp:   (跟cp命令类似一样的) (如果 SRC 是目录的话,支持 -r 选项 或 -a )

(这些过程都是加密的,)

            scp SRC(源) DEST(目标)             (记住,这里远程路径用冒号)

                    scp USERNAME@HOST:/path/to/somefile  /path/to/local

                    scp /path/to/local USERNAME@HOST:/path/to/somefile


客户端: ssh-keygen -t rsa   (-t type 类型)(两种方式,另一种是 ssh-keygen -t dsa )

                     -t type

                                 Specifies the type of key to create.  The possible values are

                                 “rsa1” for protocol version 1 and “rsa” or “dsa” for protocol

                                 version 2.

                     -f /path/to/KEY_FILE        (不要加.pub)

                     -P 'KEYSTRING':指定加密私钥的密码,如果单引号 '' (即 -P '') 表示直接不使用密码(即使用空密码)


生成密钥后 默保存在  (下面的文件名是可以重命名的)

                私钥保存在    ~/.ssh/id_rsa  

                公钥保存在    ~/.ssh/id_rsa.pub  (把公钥复制到远程主机上去)

                        公钥追加保存到远程主机对应的某用户的家目录下的.ssh/authorized_keys (或者.ssh/authorized_keys2)文件中 (一般使用 .ssh/authorized_keys  )

                                        (authorize 授权,批准,委托)

千万不能直接复制替换,因为会把别人的远程登录的验证信息覆盖掉 (只能追加)

(通过 scp复制到远程服务端,然后在远程服务端追加到.ssh/authorized_keys里面)


客户端: ssh-copy-id            

                    -i ~/.ssh/id_rsa.pub (一般是它,但可能是其它文件)(-i identity_file)(identity标识,身份,指定)

                    (例子 ssh-copy-id -i ~/.ssh/id_rsa.pub USERNAME@HOST)


ssh服务是默认安装和配置的,并且开启的





ssh  服务端是私钥 ,客户端是公钥,

image.png



第一次的时候 服务器 发送公钥给客户端(如果本地有,它就不用发送了)

(非对称的速度非常慢,而且相当消耗资源)

(非对称加密比对称加密慢三个数量级,一个数量级是10倍,三个数量级就是10的三次方倍)

image.png




第一次putty连接时,弹出一个窗口,让我们回答yes,这一过程,就是接受服务器的公钥的过程,接受下来后,保存到本地,

我们输账户密码的时候,就是用公钥加密账户和密码,传给对方的,

image.png

客户端在接受到服务端的公钥之后,会生成一个对称密码

(密钥),并使用服务器发过来的公钥进行加密这个对称密码,发给服务器端,服务器

端由于有私钥,所以是能够解密的


这个密钥(公/私密钥)是与主机有关系的


image.png

image.png

用户账号用对称密码加密发送到服务器端,服务器端解密,服务器解密后,发现用户账号存在,然后就

要求输密码, 在客户端输了密码后,再对称加密,然后发给服务器端,服务器端,解密后看看用户提供的

账号和密码是否对应,如果能对应,就是论证通过了

对话密钥是在客户端生成的,是用来安全会话的密钥 (客户端和服务端自动维护的,不需要用户输入的)

image.png

怎么让别人无法破解呢?

因为别人抓住 root 一个一个的去破解,有可能破解得出来密码,所以一般来讲,不允许root直接登录


而是 先使用普通用户登录,再su 到 root ,这样会安全许多

因为两者刚进行会话的时候,一定是传的认证数据,所以就抓这几个数据包进行破解,如果使用普通用户,即便破解到了,也只是一个权限很小的普通用户,

这样普通用户执行了许多命令后, 再 su 到 root ,别人破解起来就比较吃力了


为了防止被破解,我们可以不定期的(比如一个小时后)更改生成的对称密钥

(客户端和服务器协商改了一下) 好不容易三天破解出来,其实已经换了好几百个对称密钥了

所以密钥交换是有期限的(比如一小时,一天),因为它不需要用户参与的,是由两个主机自动维护的ssh会话,所以它比 telnet要安全的多得多



sshv1 中间人攻击示意图

image.png






下图的 s 表示私钥 scret key,  p 表示公钥 public key (虽说是公钥,但这里的公钥并不是所有的人都可以看到的)

这个密钥是跟用户有关系的 是认证用户的

这里

1)客户端生成公私密钥,私钥放在客户端自己主机上,公钥放在远程服务器的家目录下面的一个文件里面

2)是要输用户名(例如 root ) 从客户端传用户名到服务器

3)用客户端私钥加密一段数据,,把这个数据用对称密码再加密一次,把数据发过去,,,,

,服务器用对称的密钥解密一次,解密后发现是个加密的数据,再用保存的公钥解密,如果能够解密出来,说明这个客户端(这个用户)是正确的

image.png



(我们把 192.168.1.15 作为服务器 192.168.1.45 作为客户端)

[root@localhost ~]# ssh 192.168.1.15  ( ssh  ip 地址)

The authenticity of host '192.168.1.15 (192.168.1.15)' can't be established.

RSA key fingerprint is fb:3e:1f:30:d7:b2:45:b0:dc:00:06:d0:df:31:28:86.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.1.15' (RSA) to the list of known hosts.

Connection closed by 192.168.1.15

[root@localhost ~]# ssh 192.168.1.15    ( ssh  ip 地址)

root@192.168.1.15's password:                (提示输入root的密码) (没指用户,默认为root,其实默认的是客户端上的用户名)

Last login: Fri Dec 21 16:00:53 2018 from www

[root@localhost ~]# ifconfig  (现在已登进去,发现ip 是服务端的 ip 192.168.1.15 了  )

image.png


[root@localhost ~]# exit        ( 退出 ssh 的远程 )

logout

Connection to 192.168.1.15 closed.

[root@localhost ~]#

[root@localhost ~]# ssh 192.168.1.15        (ssh 如果没 指用户的话,使用的是登录当前主机(客户端)的这个用户 (这里是root)) (如果客户端是windows就没有相关的机制了)



在 服务器端(192.168.1.15) 增加用户hadoop,并给了一个密码

[root@localhost ~]# useradd hadoop

[root@localhost ~]# passwd hadoop

Changing password for user hadoop.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

[root@localhost ~]#



在客户端 (192.168.1.45)

[root@localhost ~]# ssh hadoop@192.168.1.15  ( hadoop 是远程服务器端 192.168.1.15的用户名)

hadoop@192.168.1.15's password:

Last login: Fri Sep 21 14:18:23 2018 from 192.168.1.101

[hadoop@localhost ~]$


[hadoop@localhost ~]$ exit  (退出,到了客户端本地)

logout

Connection to 192.168.1.15 closed.


在客户端 (192.168.1.45)

[root@localhost ~]# ls -a            (这里有个.ssh目录,公共密钥就放在这里)

.                        .gconf                 .scim

..                       .gconfd                .ssh

anaconda-ks.cfg          .gnome                 .subversion

.bash_history            .gnome2                sysroot.gz

.bash_logout             .gnome2_private        .systemtap

.bash_profile            .gstreamer-0.10        .tcshrc

.bashrc                  .gtkrc-1.2-gnome2      tiny.1.gz

bincopy.sh               .ICEauthority          tiny.2.gz

busybox-1.20.2           install.log            tiny.3.gz

busybox-1.20.2.tar.bz2   install.log.syslog     tiny.4.gz

.chewing                 .lesshst               tiny.5.gz

cofig-2.6.28.5-i686.cfg  linux-2.6.38.5.tar.gz  .Trash

.cshrc                   .metacity              .viminfo

Desktop                  mkdir                  .xsession-errors

.dmrc                    .nautilus

.eggcups                 .redhat

[root@localhost ~]#

[root@localhost ~]# cd .ssh

[root@localhost .ssh]# ls  (每一次接受完一个密钥后,会保存在这个文件里面)(当前这个用户的家目录下(应该是root的家目录下吧)的 .ssh 下面的  known_hosts )

known_hosts

[root@localhost .ssh]# 


[root@localhost .ssh]# cat known_hosts  (只需要第一次,以后再连接的话,公钥就不发送,不接收了,通过这个密钥就能够跟服务端建立口令联系了)

192.168.1.15 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1l0raSHNdM91hq+uGWubyObAo2/giz3baU2+UKLN9dD3PtRYaAOdMBRbJOwW0nKKkQfUepjwR3SNwjr3ALQN3y2XD61tmqwxKu6R0+RCT0ZtxQUFwy26H2aOPSuqYIoQjEfBhPUdFry4W4dvK+/2UKbkOIeuQpH9ZfHX9wgy/dG4NKp4aTkWCv6He2UZ5sCcjbcnDTf0v4EQiK4eTIRX11VsJhYR9/Qai0gzhiybaZIesRfXPSRbJTw6EWlCnm2Ho4TQsT8rY9GWbHW8nyTT9T2q61gYOBXHfAfgTv8IB0R09QSivX3Q4L9DC30zN4WOtcmVXQd5GwbNe8YPPLaXqw==

[root@localhost .ssh]#


使用 ssh 登录远程 192.168.1.15  服务器

[root@localhost .ssh]# ssh -l hadoop 192.168.1.15

hadoop@192.168.1.15's password:

Last login: Fri Dec 21 16:18:45 2018 from 192.168.1.45

[hadoop@localhost ~]$


[hadoop@localhost ~]$ exit        (退出 对 远程 192.168.1.15  服务器的登录 )

logout

Connection to 192.168.1.15 closed.



在 客户端 192.168.1.45 里面

[root@localhost .ssh]#



不登录远程服务器 192.168.1.15 ,直接执行了一个命令,还在客户端的机器上

[root@localhost .ssh]# ssh hadoop@192.168.1.15 'ls ~'

hadoop@192.168.1.15's password:

[root@localhost .ssh]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:81:DB:A1

          inet addr:192.168.1.45  Bcast:192.168.1.255  Mask:255.255.255.0


 


[root@localhost .ssh]#


[root@localhost .ssh]# ssh hadoop@192.168.1.15 'ls -a ~'      (显示的是远程服务端192.168.1.15 hadoop家目录的内容)

hadoop@192.168.1.15's password:

.

..

.bash_history

.bash_logout

.bash_profile

.bashrc

.emacs

.mozilla

[root@localhost .ssh]#


本 客户端 ip  192.168.1.45

[root@localhost .ssh]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:81:DB:A1

          inet addr:192.168.1.45  Bcast:192.168.1.255  Mask:255.255.255.0

       



看 远程服务器 192.168.1.15 的 ifconfig


[root@localhost .ssh]# ssh root@192.168.1.15 'ifconfig'

root@192.168.1.15's password:

eth0      Link encap:Ethernet  HWaddr 00:0C:29:0F:3A:5D

          inet addr:192.168.1.15  Bcast:192.168.1.255  Mask:255.255.255.0

     


[root@localhost .ssh]#


[root@localhost .ssh]# ssh hadoop@192.168.1.15 '/sbin/ifconfig'

hadoop@192.168.1.15's password:

eth0      Link encap:Ethernet  HWaddr 00:0C:29:0F:3A:5D

          inet addr:192.168.1.15  Bcast:192.168.1.255  Mask:255.255.255.0

      


[root@localhost .ssh]#


[root@localhost .ssh]# cd

[root@localhost ~]# pwd

/root

[root@localhost ~]# ls

anaconda-ks.cfg          install.log            tiny.2.gz

bincopy.sh               install.log.syslog     tiny.3.gz

busybox-1.20.2           linux-2.6.38.5.tar.gz  tiny.4.gz

busybox-1.20.2.tar.bz2   mkdir                  tiny.5.gz

cofig-2.6.28.5-i686.cfg  sysroot.gz

Desktop                  tiny.1.gz


把文件复制到远程主机上

[root@localhost ~]# scp busybox-1.20.2.tar.bz2 hadoop@192.168.1.15:~

hadoop@192.168.1.15's password:

busybox-1.20.2.tar.bz2                        100% 2135KB   2.1MB/s   00:00

[root@localhost ~]#


 在远程主机 192.168.1.15 上看 是有了这个文件

[root@localhost ~]# su - hadoop

[hadoop@localhost ~]$ ls

busybox-1.20.2.tar.bz2

[hadoop@localhost ~]$



把远程主机上的文件复制到本地客户端上

[root@localhost ~]# scp root@192.168.1.15:/etc/fstab ./

root@192.168.1.15's password:

fstab                                         100%  534     0.5KB/s   00:00

[root@localhost ~]#

客户端本地有这个文件了

[root@localhost ~]# cat fstab

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1

LABEL=/boot             /boot                   ext3    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

[root@localhost ~]#


家里配的客户端是 192.168.0.55  服务端是  192.168.0.15

下面的是在客户端  192.168.0.55 上的代码

[root@localhost ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):    (这里是默认文件)

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):   (这里是设置本地的密码把这个私钥加密,每次敲密码很麻烦,所以这里直接回车)

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.  (这是生成的私钥)

Your public key has been saved in /root/.ssh/id_rsa.pub.  (这是生成的公钥)

The key fingerprint is:

7e:91:05:8b:8d:42:a1:e9:52:f9:dc:e2:d9:5f:82:2c root@localhost.localdomain

[root@localhost ~]#

[root@localhost ~]# ls .ssh/

id_rsa  id_rsa.pub  known_hosts

[root@localhost ~]#


下面的代码目的是复制到远程主机192.168.0.15

[root@localhost ~]# scp .ssh/id_rsa.pub root@192.168.0.15:/root

root@192.168.0.15's password:

id_rsa.pub                                    100%  408     0.4KB/s   00:00

[root@localhost ~]#

 登录到远程主机 192.168.0.15

[root@localhost ~]# ssh root@192.168.0.15

root@192.168.0.15's password:

Last login: Fri Dec 21 19:10:44 2018 from 192.168.0.55

[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:BF:F6:36

          inet addr:192.168.0.15  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:febf:f636/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:315 errors:0 dropped:0 overruns:0 frame:0

          TX packets:164 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:32816 (32.0 KiB)  TX bytes:24258 (23.6 KiB)


lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:8 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)


[root@localhost ~]#

远程服务端  192.168.0.15  当前目录下没有.ssh目录

[root@localhost ~]# ls  -a

.                bincopy.sh                 iso2           sysroot.7.gz

..               boot.gz                    .lesshst       sysroot.8.gz

aa.txt           .cshrc                     .mount.sh.swp  sysroot.9.gz

anaconda-ks.cfg  html                       myservice.sh   sysroot.gz

.bash_history    id_rsa.pub                 results.txt    .tcshrc

.bash_logout     initrd-2.6.18-398.el5      sysroot.2.gz   test.txt

.bash_profile    initrd-2.6.18-398.el5.img  sysroot.3.gz   umount.sh

.bashrc          install.log                sysroot.4.gz   .viminfo

bbb.txt          install.log.syslog         sysroot.5.gz   .Xauthority

bb.txt           iso                        sysroot.6.gz

[root@localhost ~]#

远程服务端  192.168.0.15  的root的家目录下建一个  .ssh 的目录

[root@localhost ~]# mkdir .ssh

.ssh的目录权限应该是700的

[root@localhost ~]# ls -la

总计 58660

drwxr-x---  5 root root    4096 12-21 19:28 .

drwxr-xr-x 25 root root    4096 12-21 18:59 ..

-rw-r--r--  1 root root      50 11-19 21:43 aa.txt

-rw-------  1 root root    1199 08-25 06:17 anaconda-ks.cfg

-rw-------  1 root root   16192 12-21 19:10 .bash_history

-rw-r--r--  1 root root      24 2006-07-13 .bash_logout

-rw-r--r--  1 root root     191 2006-07-13 .bash_profile

-rw-r--r--  1 root root     176 2006-07-13 .bashrc

-rw-r--r--  1 root root     137 11-19 22:04 bbb.txt

-rw-r--r--  1 root root      19 11-19 21:33 bb.txt

-rwxr-xr-x  1 root root     808 11-12 19:02 bincopy.sh

-rw-r--r--  1 root root 5379694 11-18 19:39 boot.gz

-rw-r--r--  1 root root     100 2006-07-13 .cshrc

-rw-r--r--  1 root root      16 11-19 21:41 html

-rw-r--r--  1 root root     408 12-21 19:25 id_rsa.pub

-rw-------  1 root root 3609748 11-12 18:40 initrd-2.6.18-398.el5

-rw-------  1 root root 3659914 11-12 18:40 initrd-2.6.18-398.el5.img

-rw-r--r--  1 root root   36858 08-25 06:16 install.log

-rw-r--r--  1 root root    3891 08-25 06:16 install.log.syslog

drwxr-xr-x  9 root root    4096 11-18 20:23 iso

drwxr-xr-x  9 root root    4096 11-18 20:22 iso2

-rw-------  1 root root     112 11-20 19:53 .lesshst

-rw-------  1 root root   12288 09-22 15:03 .mount.sh.swp

-rwxr-xr-x  1 root root     460 11-05 19:45 myservice.sh

-rw-r--r--  1 root root       0 11-19 20:18 results.txt

drwxr-xr-x  2 root root    4096 12-21 19:28 .ssh


远程服务端  192.168.0.15  的root的家目录下的  .ssh 的目录 

的权限是 755 应该改成 700

[root@localhost ~]# chmod 700 .ssh/

[root@localhost ~]#


[root@localhost ~]# ls -la

总计 58660

drwxr-x---  5 root root    4096 12-21 19:28 .

drwxr-xr-x 25 root root    4096 12-21 18:59 ..

-rw-r--r--  1 root root      50 11-19 21:43 aa.txt

-rw-------  1 root root    1199 08-25 06:17 anaconda-ks.cfg

-rw-------  1 root root   16192 12-21 19:10 .bash_history

-rw-r--r--  1 root root      24 2006-07-13 .bash_logout

-rw-r--r--  1 root root     191 2006-07-13 .bash_profile

-rw-r--r--  1 root root     176 2006-07-13 .bashrc

-rw-r--r--  1 root root     137 11-19 22:04 bbb.txt

-rw-r--r--  1 root root      19 11-19 21:33 bb.txt

-rwxr-xr-x  1 root root     808 11-12 19:02 bincopy.sh

-rw-r--r--  1 root root 5379694 11-18 19:39 boot.gz

-rw-r--r--  1 root root     100 2006-07-13 .cshrc

-rw-r--r--  1 root root      16 11-19 21:41 html

-rw-r--r--  1 root root     408 12-21 19:25 id_rsa.pub

-rw-------  1 root root 3609748 11-12 18:40 initrd-2.6.18-398.el5

-rw-------  1 root root 3659914 11-12 18:40 initrd-2.6.18-398.el5.img

-rw-r--r--  1 root root   36858 08-25 06:16 install.log

-rw-r--r--  1 root root    3891 08-25 06:16 install.log.syslog

drwxr-xr-x  9 root root    4096 11-18 20:23 iso

drwxr-xr-x  9 root root    4096 11-18 20:22 iso2

-rw-------  1 root root     112 11-20 19:53 .lesshst

-rw-------  1 root root   12288 09-22 15:03 .mount.sh.swp

-rwxr-xr-x  1 root root     460 11-05 19:45 myservice.sh

-rw-r--r--  1 root root       0 11-19 20:18 results.txt

drwx------  2 root root    4096 12-21 19:28 .ssh


远程服务端  192.168.0.15   把 id_rsa.pub 内容追加到这个文件 .ssh/authorized_keys 里面

[root@localhost ~]# cat id_rsa.pub >> .ssh/authorized_keys

[root@localhost ~]#

查看  远程服务端  192.168.0.15   家目录下 .ssh/authorized_keys

[root@localhost ~]# cat .ssh/authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxuGRMLLrVtdANWUv7WTPk6DwcjGNZxbaRh1xPoCLjxhn1NKPDTJ0OwiC/ZFJ8n7zDc2LGeqGIp6kheHBQpW1eG+LmlY0p9hHtQF+r7vOpK3EZL1mSNL6ro79d6xSHdWpugwm5dDFo8ilnR253r9xZweA6qsLYQM7cSWpA3CmWXOsf4L4CpDv+NZ6uUeCz8RWAYY+lqTL3BrWiAz8oWHNp3KbcM3mlDp3Uvx8sFfJCJFXmjngVSFpwGIvhmnIf1BaYeiyHhke/CKfqJC/aat2/5mwK0ZhZmLHkin7H4PFeGtOxQa2tgIYi3EX4es8YMttmQjQuV3uDh4IM9Iobpy3yQ== root@localhost.localdomain

[root@localhost ~]#

退出 远程服务端  192.168.0.15 

[root@localhost ~]# exit

logout

Connection to 192.168.0.15 closed.

此时到了客户端 192.168.0.55 

[root@localhost ~]#

此时 直接就可以登上 远程服务端  192.168.0.15 

[root@localhost ~]# ssh root@192.168.0.15

Last login: Fri Dec 21 19:26:23 2018 from 192.168.0.55

[root@localhost ~]#

看看是不是远程服务端

[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:BF:F6:36

          inet addr:192.168.0.15  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:febf:f636/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:710 errors:0 dropped:0 overruns:0 frame:0

          TX packets:356 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:69069 (67.4 KiB)  TX bytes:56681 (55.3 KiB)


lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:8 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)


[root@localhost ~]#


再来一次 

退出 远程服务端  192.168.0.15 

[root@localhost ~]# exit

logout

Connection to 192.168.0.15 closed.

此时到了客户端 192.168.0.55 

[root@localhost ~]#

此时 直接就可以登上 远程服务端  192.168.0.15 

[root@localhost ~]# ssh root@192.168.0.15

Last login: Fri Dec 21 19:26:23 2018 from 192.168.0.55

[root@localhost ~]#

看看是不是远程服务端

[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:BF:F6:36

          inet addr:192.168.0.15  Bcast:192.168.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:febf:f636/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:710 errors:0 dropped:0 overruns:0 frame:0

          TX packets:356 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:69069 (67.4 KiB)  TX bytes:56681 (55.3 KiB)


lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:8 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

[root@localhost ~]# exit

logout

Connection to 192.168.0.15 closed.

此时到了客户端 192.168.0.55 

上面的方法比较麻烦,我们再试试另一种方法

我们先在远程服务端上删除 .ssh 目录及其下面所有

登上 远程服务端  192.168.0.15

[root@localhost ~]# ssh root@192.168.0.15

Last login: Fri Dec 21 19:36:58 2018 from 192.168.0.55

[root@localhost ~]# 

[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:BF:F6:36

          inet addr:192.168.0.15  Bcast:192.168.0.255  Mask:255.255.255.0


[root@localhost ~]# rm -Rf .ssh

[root@localhost ~]#

退回到本地客户端

[root@localhost ~]# exit

logout

Connection to 192.168.0.15 closed.

[root@localhost ~]#


[root@localhost ~]# ssh root@192.168.0.15   (密钥一删,就又要输密码了)

root@192.168.0.15's password:

这里ctrl+c取消掉了,未登录远程服务端 192.168.0.15 


ssh-copy-id 这个命令的作用:专门复制密钥到远程主机(服务端)上,会自动保存到远程主机(服务端上)家目录下的.ssh目录下,(.ssh不存在,它还能自动创建),而且会自动追加到 authorized_keys 里面去 所以我们没有必要使用 scp 这样的命令,但是 ssh-copy-id 命令不一定在所有的主机上都有

[root@localhost ~]# man ssh-copy-id

-i 指定要复制的文件,如果不指定,默认值反正不是 ~/.ssh/id_rsa.pub 

image.png

image.png


看是在 本地客户端 192.168.0.55 

[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:A7:3A:72

          inet addr:192.168.0.55  Bcast:192.168.0.255  Mask:255.255.255.0


下面的步骤是把 本地客户端的 ./.ssh/id_rsa.pub (公钥)  复制到远程服务端 192.168.0.15的家目录 下的 .ssh目录 并追加到 authorized_keys 里面 

下面的 ssh-copy-id 命令 不需要指定放在远程服务端 192.168.0.15 哪个位置,它是自动放置的

[root@localhost ~]# ssh-copy-id -i ./.ssh/id_rsa.pub root@192.168.0.15

17

root@192.168.0.15's password:

Now try logging into the machine, with "ssh 'root@192.168.0.15'", and check in:


  .ssh/authorized_keys


to make sure we haven't added extra keys that you weren't expecting.


[root@localhost ~]#

看,已经可以直接登录远程服务端 192.168.0.15 了

[root@localhost ~]# ssh root@192.168.0.15

Last login: Fri Dec 21 19:45:02 2018 from 192.168.0.55

[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:BF:F6:36

          inet addr:192.168.0.15  Bcast:192.168.0.255  Mask:255.255.255.0


远程服务端不能直接登录本地客户端的

打开 远程服务端192.168.0.15 的putty窗口

[root@localhost ~]# ssh root@192.168.0.55

image.png

如果想让服务端(当作客户端)可以不使用密码来登录客户端(当作服务端)

现在在 192.168.0.15上操作(当作客户端)

[root@localhost ~]# man ssh-keygen

-f filename 指定文件

image.png

-P passphrase 指定密码 (本地本身的打开私钥的密码,不是远程服务端的密码)

image.png


在 主机192.168.0.15(当作客户端)

[root@localhost ~]# ssh-keygen -t rsa -f .ssh/id_rsa -P ''

Generating public/private rsa key pair.

Your identification has been saved in .ssh/id_rsa.

Your public key has been saved in .ssh/id_rsa.pub.

The key fingerprint is:

f3:35:6d:9f:95:49:87:24:52:c1:f4:e7:11:1a:f7:e7 root@localhost.localdomain

[root@localhost ~]#

下面是马哥的在红帽6上的显示的,与我的在红帽5上显示的不太一样

image.png


(马哥 为什么直接 #  ssh-copy-id  root@192.168.0.55 而不指定 -i )

[root@localhost ~]#  ssh-copy-id -i ./.ssh/id_rsa.pub root@192.168.0.55

17

root@192.168.0.55's password:

Now try logging into the machine, with "ssh 'root@192.168.0.55'", and check in:


  .ssh/authorized_keys


to make sure we haven't added extra keys that you weren't expecting.


[root@localhost ~]#

可以不输密码直接登录到 192.168.0.55 (作为远程服务端了)

[root@localhost ~]# ssh root@192.168.0.55

Last login: Fri Dec 21 20:21:30 2018 from 192.168.0.15

[root@localhost ~]#


[root@localhost ~]# netstat -tnlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

tcp        0      0 0.0.0.0:640                 0.0.0.0:*                   LISTEN      4274/rpc.statd

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      4225/portmap

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      4659/sshd

tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      3196/cupsd

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      4697/sendmail

tcp        0      0 :::22                       :::*                        LISTEN      4659/sshd


0.0.0.0 表示当前主机上的每一个地址都监听

(比如 本地有三个ip 地址

192.168.0.15,17.200.0.18,127.0.0.1 三个地址都监听

)

[root@localhost ~]#


如何让小系统也具有 ssh 的功能,

如果移植太麻烦,因为ssh太重量级,提供的功能非常多,于是就有了嵌入式的专门的小ssh系统叫 dropbear


dropbear 嵌入式系统专用的ssh服务器端和客户端工具

我们先把它编译安装在本机,然后移植到小linux上面

     服务器端:dropbear

         密钥生成工具       dropbearkey (服务器端用的)

                    (服务器端为了实现主机认证而生成密钥的)

     客户端:dbclient


主机密钥使用dropbearkey 来生成,默认位置: /etc/dropbear/

        两种格式        RSA: 一般默认名为 dropbear_rsa_host_key

                                        长度可变,只要是8的整数倍就可以,默认为 1024

                              DSS: 一般默认名为 dropbear_dss_host_key

                                        长度固定,默认为 1024


            dropbearkey 

                    -t rsa|dss

                    -f /path/to/KEY_FILE  (这个文件位置一定要自己指定,

                        (如果 -t 是rsa的话)最好dropbear_rsa_host_key) 

                        (如果 -t 是dsa的话)最好dropbear_dss_host_key) 

                    -s SIZE             (-s size) 指定长度,它是可省的               




[root@localhost ~]# cd /etc/ssh/

[root@localhost ssh]# ls

moduli       ssh_host_dsa_key      ssh_host_key.pub

ssh_config   ssh_host_dsa_key.pub  ssh_host_rsa_key

sshd_config  ssh_host_key          ssh_host_rsa_key.pub


ssh_config    客户端配置文件

sshd_config  服务端配置文件

 ssh_host_dsa_key ssh_host_dsa_key.pub       

 ssh_host_rsa_key ssh_host_rsa_key.pub

 ssh_host_key ssh_host_key.pub         

这三对密钥都是主机密钥  也是可以使用 ssh-kengen生成的,只是我们没有参与这个过程而已



我们编译 dropbear 的时候,默认是使用 nsswitch 来找用户的账号密码(实现名称解析)

    (因此还需要把nsswitch提取过去)

  1)  nsswitch 需要的文件

            /etc/nsswitch.conf

            /lib/libnss_files*

            /usr/lib/libnss3.so

            /usr/lib/libnss_files*

这几个文件很小,1M都不到, 把这几个文件移植过去

(没有nsswitch的话,无法实现用户的名称解析,没法将用户的账户转换成对应的id)

 2)dropbear会在用户登录时检查其默认shell是否为当前系统的安全shell)

(/etc/shells 中的shell 才表示允许使用的shell,所在需要有这个文件

/bin/bash /bin/sh /bin/ash /bin/hush 都要写进来 )

( 3) 用户远程登录的时候,会打开一个伪终端)


4) 安装配置dropbear

[root@localhost ssh]# tty

/dev/pts/1

它就是伪终端

意味着 /dev/pts/ 这个目录要存在, 这个目录还要挂载一个伪文件系统(伪终端)


[root@localhost ssh]# cat /etc/fstab

/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1

LABEL=/boot             /boot                   ext3    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0


mode=620 表示里面创建新文件的时候,权限是 620

image.png

当以上的问题解决好之后,使用 dropbearkey  生成 两个主机密钥,就可以登录了



下面来完成具体的移植吧

马哥 下载 dropbear

image.png

 当然要编译的话,就先装好开发环境吧 (这个马哥讲了多次了)

我下载 dropbear

http://matt.ucc.asn.au/dropbear/dropbear.html

https://matt.ucc.asn.au/dropbear/

https://matt.ucc.asn.au/dropbear/releases/


[root@localhost ~]# wget https://matt.ucc.asn.au/dropbear/releases/dropbear-2013.56.tar.bz2

--2018-12-19 16:27:49--  https://matt.ucc.asn.au/dropbear/releases/dropbear-2013.56.tar.bz2

正在解析主机 matt.ucc.asn.au... 130.95.13.18, 2405:3c00:5200:100::18

Connecting to matt.ucc.asn.au|130.95.13.18|:443... 已连接。

ERROR: cannot verify matt.ucc.asn.au's certificate, issued by `/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3':

  Unable to locally verify the issuer's authority.

ERROR: certificate common name `ucc.asn.au' doesn't match requested host name `matt.ucc.asn.au'.

To connect to matt.ucc.asn.au insecurely, use `--no-check-certificate'.

无法建立 SSL 连接。

[root@localhost ~]# wget https://matt.ucc.asn.au/dropbear/releases/dropbear-2013.56.tar.bz2 --no-check-certificate


[root@localhost ~]# tar xf dropbear-2013.56.tar.bz2

[root@localhost ~]# cd dropbear-2013.56

[root@localhost dropbear-2013.56]#


[root@localhost dropbear-2013.56]# ./configure  (默认不会编译scp这样的客户端,不会编译远程复制命令)

[root@localhost dropbear-2013.56]# make

[root@localhost dropbear-2013.56]# ./configure --help | less  (没看到关于scp的)

image.png

[root@localhost dropbear-2013.56]# ls

image.png

[root@localhost dropbear-2013.56]# make install        (装在 /usr/local 目录下)

image.png


[root@localhost ~]# ./bincopy.sh

Your command:dropbear

/usr/local/sbin/dropbear

copy lib /lib/libcrypt.so.1 finished.

copy lib /lib/libutil.so.1 finished.

copy lib /lib/libz.so.1 finished.

copy lib /lib/libc.so.6 finished.

copy lib /lib/ld-linux.so.2 finished.

copy /usr/local/sbin/dropbear finished.

Continue:dropbearkey

/usr/local/bin/dropbearkey

copy /usr/local/bin/dropbearkey finished.

Continue:dbclient

/usr/local/bin/dbclient

copy /usr/local/bin/dbclient finished.

Continue:q

[root@localhost ~]#

[root@localhost ~]# sync

[root@localhost ~]# sync


还要创建 etc/shells 文件

[root@localhost ~]# cd /mnt/sysroot

[root@localhost sysroot]# vim etc/shells

/bin/sh

/bin/bash

/bin/ash

/bin/hush


还要在etc/fstab中加上这个伪文件系统 pts

[root@localhost sysroot]# vim etc/fstab

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

devpts                  /dev/pts                devpts  mode=620        0 0

/dev/hda1               /boot                   ext3    defaults        0 0

/dev/hda2               /                       ext3    defaults        1 1


还要创建 /dev/pts  目录

[root@localhost sysroot]# mkdir dev/pts

[root@localhost sysroot]#


创建主机密钥

先创建目录

[root@localhost sysroot]# pwd

/mnt/sysroot

[root@localhost sysroot]# mkdir etc/dropbear

[root@localhost sysroot]# dropbearkey -t rsa -f /mnt/sysroot/etc/dropbear/dropbear_rsa_host_key -s 2048

Will output 2048 bit rsa secret key to '/mnt/sysroot/etc/dropbear/dropbear_rsa_host_key'

Generating key, this may take a while...

Public key portion is:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAwC1hq6b4cIWYc4rIm+/I/ZmYUhiBz2Ee22GIN/cVZZXzIEu+q9pNTJx0QJLs8IOTiSPF171dXPR+YNaoUnYWPVAuMJWIgXlUk9w2spILL5rY9o1w61zvni2g+NXN61z9fnRgJoR0P6pgsaNQ1teorQlrr70kV+Q9RB1p78dUg9ONScr4z/FzG+yYf+x0r6OsYbN6RZ5xPZk1RS3W+WIZidPEPUWFq0lspGfJmAqpXIPBVCOnOFIYR4k2yWos6hubpbcEAiKDaFrrweooJthP8zWQeFMC6x6GCr/feljvZdg/LurNPozdQ4oEYst8jfDCtWMv8j22gCe4Y1VIyzRK8o28TE= root@localhost.localdomain

Fingerprint: md5 4d:8d:fa:4f:f0:4c:55:80:86:aa:5d:de:b6:22:41:70

[root@localhost sysroot]#

[root@localhost sysroot]# dropbearkey -t dss -f /mnt/sysroot/etc/dropbear/dropbear_dss_host_key

Will output 1024 bit dss secret key to '/mnt/sysroot/etc/dropbear/dropbear_dss_host_key'

Generating key, this may take a while...

Public key portion is:

ssh-dss AAAAB3NzaC1kc3MAAACBAIS3hvPanxWbtjQYpRgck1mPiOfrLe9F22HJpjCPPHASsrcXCQLd9BxoykjyKy0qLSu/OXLcGdo5NDZFA8IvARurMikSCq+RcSsgBKwali1EKzpc/PL6a2xXDUszCvmKGtxlnrJD24CeswcQr0O8g3FdNwKQ04EU21vOWVg+2XcFAAAAFQCAHXy8vJDLND0FPc6RrfshCJQyfwAAAIB8Bi2kpFtrCKde81MWqp78tmPeQfy8QVMto775QR7ki1jZY3WhyADxZA4yIke49g1/RrpF2bsu8QOVLDf5p+Elrx6ZJEF8CY0KSqvrsEHOOMU6n7yhdtrI/eg/ZqO8lWRtBCnMzfRsgUQBH26YygfBmri6MrlHZsi2+N08M+tLygAAAIA1n0Y79QTzBUIi9Avt/RFXuVg6EPm8BtwFJgTSUgm2cHpZnzwVs3SFxMxKYZOm7dbNldevK9Tx+ACd0LN239OL63AScvpAfwjM6PaGMUe4TyFqPUd0t8rnDN0LZimRmZ8s+U6JEN5q0KEeUqCr6vUjlmQ78j6aZW+KXnKwfzayvA== root@localhost.localdomain

Fingerprint: md5 30:cc:57:5f:ff:27:58:b2:7a:a8:2e:72:53:f9:95:72

[root@localhost sysroot]#

[root@localhost sysroot]# ls etc/dropbear/

dropbear_dss_host_key  dropbear_rsa_host_key

[root@localhost sysroot]#


下面就是移植 nsswitch 了

[root@localhost sysroot]# pwd

/mnt/sysroot

[root@localhost sysroot]# ls usr

bin  local  sbin

[root@localhost sysroot]# mkdir usr/lib       (先创建lib目录)

[root@localhost sysroot]#

[root@localhost ~]# cp -d /lib/libnss_files* /mnt/sysroot/lib/

[root@localhost ~]# cp -d /usr/lib/libnss3.so /usr/lib/libnss_files.so /mnt/sysroot/usr/lib/

[root@localhost ~]#


[root@localhost ~]# ls -l /mnt/sysroot/lib/

总计 2033

-rwxr-xr-x 1 root root  130860 12-18 21:02 ld-linux.so.2

-rwxr-xr-x 1 root root   45432 12-19 16:47 libcrypt.so.1

-rwxr-xr-x 1 root root 1710436 12-18 21:02 libc.so.6

-rwxr-xr-x 1 root root   20668 12-18 21:02 libdl.so.2

-rwxr-xr-x 1 root root   50848 12-19 17:23 libnss_files-2.5.so

lrwxrwxrwx 1 root root      19 12-19 17:23 libnss_files.so.2 -> libnss_files-2.5.so

-rwxr-xr-x 1 root root   13276 12-18 21:02 libtermcap.so.2

-rwxr-xr-x 1 root root   15308 12-19 16:47 libutil.so.1

-rwxr-xr-x 1 root root   75120 12-19 16:47 libz.so.1

drwxr-xr-x 2 root root    1024 12-18 21:02 modules

[root@localhost ~]#

[root@localhost ~]# ls -l /mnt/sysroot/usr/lib/

总计 1192

-rwxr-xr-x 1 root root 1214244 12-19 17:24 libnss3.so

lrwxrwxrwx 1 root root      27 12-19 17:24 libnss_files.so -> ../../lib/libnss_files.so.2

[root@localhost ~]#

我们只需要复制这三个文件(带上链接文件,其实是4个吧)就行

然后 我们 复制 nsswitch.conf 过去

[root@localhost ~]# cp /etc/nsswitch.conf /mnt/sysroot/etc/

[root@localhost ~]#

[root@localhost ~]# vim /mnt/sysroot/etc/nsswitch.conf

passwd:     files

shadow:     files

group:      files

hosts:      files dns


 只需要保留上面四行就可以了

image.png


挂起源linux,(等一会儿吧,防止系统又有损坏)打开小linux

能 ping 通

image.png















 #  dropbear (命令找不着)

image.png

# echo $PATH   (没有/usr/local/bin 和 /usr/local/sbin)

(#vi .bash_profile 或者使用绝对路径吧)

image.png


# /usr/local/sbin/dropbear -E -F (第一次启动时加上 -E -F 表示在前端运行) (客户端登录的时候,会有提示,如报错等 )

image.png


用客户端 192.168.1.15 (作为客户端)来访问它试试

[root@localhost ~]# ssh 192.168.1.47

image.png

image.png


小liniux 192.168.1.47(作为服务端)  可以看到信息了

image.png

image.png



用客户端 192.168.1.15 (作为客户端) 已经登录上 小系统了

-bash-3.2# ls

-bash-3.2# ifconfig

-bash: ifconfig: command not found

-bash-3.2# echo $PATH        (所以我们要建个环境配置文件,当然可以有全路径或者 export 补上)

/usr/bin:/bin

-bash-3.2#


-bash-3.2# export PATH=$PATH:/usr/sbin:/sbin:/usr/local/bin:/usr/local/sbin


-bash-3.2# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:C1:F6:58

          inet addr:192.168.1.47  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:4721 errors:0 dropped:0 overruns:0 frame:0

          TX packets:4422 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:451303 (440.7 KiB)  TX bytes:425540 (415.5 KiB)

          Interrupt:51 Base address:0x2000


lo        Link encap:Local Loopback

          inet addr:127.0.0.1  Mask:255.0.0.0

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


-bash-3.2#

-bash-3.2# tty

/dev/pts/0

-bash-3.2#


-bash-3.2# logout        (退出,回到自己的 192.168.1.15 界面)

Connection to 192.168.1.47 closed.

[root@localhost ~]#


小系统 192.168.1.47 作为服务端 退出 dropbear 服务  (ctrl + c )

然后 执行 # /usr/local/sbin/dropbear  (没有-E -F ,这样就在后台运行了)

image.png

小系统 192.168.1.47 作为服务端

# netstat -tnlp    (可以看到运行在22端口上了)

image.png


从客户端 (192.168.1.15) 再进去服务端 ( 192.168.4.47) 看看

[root@localhost ~]# ssh 192.168.1.47

root@192.168.1.47's password:

-bash-3.2# cd /var/log

-bash-3.2# ls

messages    messages.0  secure

-bash-3.2# tail secure

Dec 22 13:44:34 tiny auth.info login[524]: root login on 'tty2'

-bash-3.2#

-bash-3.2# cd /usr/local/bin

-bash-3.2# ls            ( dbclient  已经移植过来了)

dbclient     dropbearkey

-bash-3.2#


-bash-3.2# /usr/local/bin/dbclient -h

Dropbear SSH client v2013.56 https://matt.ucc.asn.au/dropbear/dropbear.html

Usage: /usr/local/bin/dbclient [options] [user@]host[/port][,[user@]host/port],...] [command]

-p <remoteport>

-l <username>

-t    Allocate a pty

-T    Don't allocate a pty

-N    Don't run a remote command

-f    Run in background after auth

-y    Always accept remote host key if unknown

-s    Request a subsystem (use by external sftp)

-i <identityfile>   (multiple allowed)

-A    Enable agent auth forwarding

-L <[listenaddress:]listenport:remotehost:remoteport> Local port forwarding

-g    Allow remote hosts to connect to forwarded ports

-R <[listenaddress:]listenport:remotehost:remoteport> Remote port forwarding

-W <receive_window_buffer> (default 24576, larger may be faster, max 1MB)

-K <keepalive>  (0 is never, default 0)

-I <idle_timeout>  (0 is never, default 0)

-B <endhost:endport> Netcat-alike forwarding

-J <proxy_program> Use program pipe rather than TCP connection

-c <cipher list> Specify preferred ciphers ('-c help' to list options)

-m <MAC list> Specify preferred MACs for packet verification (or '-m help')

-bash-3.2#



把  192.168.1.25  作为服务端

看这里 小linux (作为客户端)能不能登上去


-bash-3.2# /usr/local/bin/dbclient -l root 192.168.1.25


Host '192.168.1.25' is not in the trusted hosts file.

(fingerprint md5 ce:f7:7f:ae:6b:4c:56:e3:43:ae:8e:96:bc:0f:9c:94)

Do you want to continue connecting? (y/n) y

root@192.168.1.25's password:

Last login: Sat Dec 22 13:51:39 2018

可以登上去的

[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:D1:2C:BB

          inet addr:192.168.1.25  Bcast:192.168.1.255  Mask:255.255.255.0


把 web服务器(比如nginx 移植过来) (编译移植nginx过来,提供几个目录,提供几个配置文件,nginx能够照样正常工作)


普通分类: