记录自己在实现过程中遇到的坑。
实现目的
1、要求windows和linux可以互相通信,并传输文件
2、要求window和windows可以互相通信,并传输文件
环境
1、本地:win10企业版x64 ,python:3.8.7
2、linux服务端:ubuntu20.04 x64
3、windows服务端:win10专业版 x64
windows连接linux系统失败问题
windows连接linux系统失败,出现以下错误
排查流程
1、查看linux上是否ssh服务,打开终端,输入ssh,看是否有该命令功能:
2、如果没有的话进行安装,如果有进行下一步:
命令:sudo apt-get install openssh-server openssh-client
3、判断ssh配置文件里的端口是否为22:
命令:cat /etc/ssh/ssh_config
4、如果不是可以修改,如果是,查看端口22是否开通:
命令:netstat -ntl
5、若开通后连接还是提示:TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败;
6、可能是防火墙导致无法通信,查看防火墙是否关闭:
命令:sudo ufw status
7、可以看到防火墙是开始状态,关闭防火墙;
命令:sudo ufw disable
8、再进行连接即可连接成功。
设置重启系统防火墙服务不启动
1)查询服务自启动的列表
systemctl list-unit-files
2)关闭自启动服务
systemctl disable ufw.service
3)再次查看服务自启动列表如下
4)、重启系统验证,发现系统重启后防火墙还是关闭状态。
windows连接windows系统失败问题
为了保证代码的一致性,所以windows上也采用paramiko的方式进行连接。
windows连接Windows系统失败,出现以下错误:
排查流程
确保ssh先能通信成功。
1、安装ssh(本地和服务端都要安装)
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
2、安装后,通过命令(管理员权限)或服务中,都启动失败,提示“拒绝访问”;
3、最后进入到OpenSSH官网下载了一个新版本(下载的是V8.6.0.0p1-Beta最新的版本),然后重复上面的安装步骤,则服务可以启动;
如何设置为开机自启动
1)管理员权限启动终端,输入以下命令:
命令:sc config sshd start=auto
2)将ssh目录加入到环境变量中,重启终端,直接输入ssh就可以运行该服务。
4、使用ssh连接,提示:
ssh: connect to host [server_ip] port 22: Connection timed out
5、怀疑防火墙导致的,便尝试关闭试试
1)查看防火墙状态
netsh advfirewall show allprofiles
2)如若防火墙状态开启,则关闭windows上防火墙
netsh advfirewall set allprofiles state off
3)重新启动系统后,Windows防火墙将不再处于活动状态;
如果要再次启用防火墙,请使用以下命令:
netsh advfirewall set allprofiles state on
4)或者不关闭防火墙将sshd添加入站规则,并开放22号端口
命令:netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
6、关闭防火墙后,再次使用ssh连接提示以下错误
Connection reset by [server_ip] port 22
7、查看详细日志:ssh -vvv [用户名]@[server_ip]查看错误码:
send - WSASend() ERROR:10053, io:000001A133F02E60
8、查了很多资料说让改MTU(网络上传送的最大数据包,单位是字节),使用ping -f -l [字节] ip地址也没有问题。
此时心态已经快崩溃了。。。
偶尔在GitHub上看到一篇和我问题相似文章;
在github上查到一个用户出现相同的问题,
9、尝试着将ssh的位置改一下;
将C:\Users\用户名(比如Administrator)\openssh\OpenSSH-Win64改为C:\Users\openssh\OpenSSH-Win64,然后将其加入到环境变量里,重新执行第一步操作安装启动sshd服务,再次相连发现成功了。。
(估计是这个ssh版本有问题)
10、使用ssh连接时,SSH2_MSG_SERVICE_ACCEPT received成功后出现10054的错误:
debug3: recv - from CB ERROR:10054, io:000001C51411FD40
基本上是用户名写错了,可以在终端输入命令“net user”,可以查看自己系统的用户名。
以上就是目前遇到的问题,整理一下,以防自己忘记。
最后的最后,来个小小的推荐
为了保护自己的代码,开始找一些工具,偶然搜到VirboxProtector工具,试用着发现还不错,所以推荐一下。
题外话
查询了很多家,貌似只有这一家支持对python脚本语言加密,听他们技术人员说这种直接对源码保护方式的安全性不是特别高,但是防小白还是可以的(虽然我自己也是小白)。其实我觉得有时候保护的目的不是为了安全性,比如我,更最主要的是不想直白的暴露自己的代码写的有多垃圾。。。
听他们技术人员说如果对安全性有要求的话,建议使用cython将源码文件转成pyd或so库,当成动态库以本地程序的方式保护,安全性会很高。
这个转换方式后再保护的方法,等我抽时间试试。。
————————————————
版权声明:本文为CSDN博主「CornerRose」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CornerRose/article/details/122738094