欢迎各位兄弟 发布技术文章
这里的技术是共享的
私钥是给自己使用的(本地使用私钥) (私钥是解锁,解密,解钥)(且私钥签名) ;;; 公钥是给别人使用的(远程服务端使用公钥) (公钥是加密,加钥,加锁)(且公钥验证)
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 服务端是私钥 ,客户端是公钥,
第一次的时候 服务器 发送公钥给客户端(如果本地有,它就不用发送了)
(非对称的速度非常慢,而且相当消耗资源)
(非对称加密比对称加密慢三个数量级,一个数量级是10倍,三个数量级就是10的三次方倍)
第一次putty连接时,弹出一个窗口,让我们回答yes,这一过程,就是接受服务器的公钥的过程,接受下来后,保存到本地,
我们输账户密码的时候,就是用公钥加密账户和密码,传给对方的,
客户端在接受到服务端的公钥之后,会生成一个对称密码
(密钥),并使用服务器发过来的公钥进行加密这个对称密码,发给服务器端,服务器
端由于有私钥,所以是能够解密的
这个密钥(公/私密钥)是与主机有关系的
用户账号用对称密码加密发送到服务器端,服务器端解密,服务器解密后,发现用户账号存在,然后就
要求输密码, 在客户端输了密码后,再对称加密,然后发给服务器端,服务器端,解密后看看用户提供的
账号和密码是否对应,如果能对应,就是论证通过了
对话密钥是在客户端生成的,是用来安全会话的密钥 (客户端和服务端自动维护的,不需要用户输入的)
怎么让别人无法破解呢?
因为别人抓住 root 一个一个的去破解,有可能破解得出来密码,所以一般来讲,不允许root直接登录
而是 先使用普通用户登录,再su 到 root ,这样会安全许多
因为两者刚进行会话的时候,一定是传的认证数据,所以就抓这几个数据包进行破解,如果使用普通用户,即便破解到了,也只是一个权限很小的普通用户,
这样普通用户执行了许多命令后, 再 su 到 root ,别人破解起来就比较吃力了
为了防止被破解,我们可以不定期的(比如一个小时后)更改生成的对称密钥
(客户端和服务器协商改了一下) 好不容易三天破解出来,其实已经换了好几百个对称密钥了
所以密钥交换是有期限的(比如一小时,一天),因为它不需要用户参与的,是由两个主机自动维护的ssh会话,所以它比 telnet要安全的多得多
sshv1 中间人攻击示意图
下图的 s 表示私钥 scret key, p 表示公钥 public key (虽说是公钥,但这里的公钥并不是所有的人都可以看到的)
这个密钥是跟用户有关系的 是认证用户的
这里
1)客户端生成公私密钥,私钥放在客户端自己主机上,公钥放在远程服务器的家目录下面的一个文件里面
2)是要输用户名(例如 root ) 从客户端传用户名到服务器
3)用客户端私钥加密一段数据,,把这个数据用对称密码再加密一次,把数据发过去,,,,
,服务器用对称的密钥解密一次,解密后发现是个加密的数据,再用保存的公钥解密,如果能够解密出来,说明这个客户端(这个用户)是正确的
(我们把 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 了 )
[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
看是在 本地客户端 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
如果想让服务端(当作客户端)可以不使用密码来登录客户端(当作服务端)
现在在 192.168.0.15上操作(当作客户端)
[root@localhost ~]# man ssh-keygen
-f filename 指定文件
-P passphrase 指定密码 (本地本身的打开私钥的密码,不是远程服务端的密码)
在 主机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上显示的不太一样
(马哥 为什么直接 # 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
当以上的问题解决好之后,使用 dropbearkey 生成 两个主机密钥,就可以登录了
下面来完成具体的移植吧
马哥 下载 dropbear
当然要编译的话,就先装好开发环境吧 (这个马哥讲了多次了)
我下载 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的)
[root@localhost dropbear-2013.56]# ls
[root@localhost dropbear-2013.56]# make install (装在 /usr/local 目录下)
[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
只需要保留上面四行就可以了
挂起源linux,(等一会儿吧,防止系统又有损坏)打开小linux
能 ping 通
# dropbear (命令找不着)
# echo $PATH (没有/usr/local/bin 和 /usr/local/sbin)
(#vi .bash_profile 或者使用绝对路径吧)
# /usr/local/sbin/dropbear -E -F (第一次启动时加上 -E -F 表示在前端运行) (客户端登录的时候,会有提示,如报错等 )
用客户端 192.168.1.15 (作为客户端)来访问它试试
[root@localhost ~]# ssh 192.168.1.47
小liniux 192.168.1.47(作为服务端) 可以看到信息了
用客户端 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 ,这样就在后台运行了)
小系统 192.168.1.47 作为服务端
# netstat -tnlp (可以看到运行在22端口上了)
从客户端 (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能够照样正常工作)