• 关于

    client连上服务器

    的搜索结果

回答

那你在要"验证层"做好相关的处理. ######中间加个验证服务器 ###### 引用来自“yisen”的答案 中间加个验证服务器 验证服务器去验证用户的密码吗? 密码存储在数据库中,获得这两个密码肯定有两个conn连接,难道挨个conn连接去验证吗? 求详细答案 ######      允许的密码数量应该有上限吧.  密码还是统一放在一个验证服务器上比较好. 由验证服务器判断密码是哪个服务器然后传ip和临时验证用的key 给client, 并且通知这个临时key给 对应的服务器, 对应服务器在完成client连接后,删除该临时key.       否则你client就拿该密码一个个尝试所有可能的服务器,直到成功连上第一个,  或者全部失败.######哈哈,如果用户把两个密码改成一样呢?###### 引用来自“Lunar_Lin”的答案       允许的密码数量应该有上限吧.  密码还是统一放在一个验证服务器上比较好. 由验证服务器判断密码是哪个服务器然后传ip和临时验证用的key 给client, 并且通知这个临时key给 对应的服务器, 对应服务器在完成client连接后,删除该临时key.       否则你client就拿该密码一个个尝试所有可能的服务器,直到成功连上第一个,  或者全部失败. 嗯,你说的这个靠谱,验证层判断密码对应的服务器,让密码和服务器建立映射,这样就找到了。

kun坤 2020-06-05 14:27:54 0 浏览量 回答数 0

回答

从你的问题来看你只是安装了OpenVPN,但是没有对其进行配置。此外OpenVPN分服务器端和客户端(安装程序一样,只是配置文件不一样)。 OpenVPN客户端不是安装了就能用,需要服务器端才能起作用。比如我的OpenVPN客户端装在我的Windows 7笔记本上,服务器端用的是Windows2003 VPS.。 我需要进行的操作为 1.对服务器端进行设置。 2.在服务器端并生成相应的文件(包括server.ovpn, ca.crt, client.key, client.crt),确保配置正确后启动服务器端。 3.复制客户端需要的文件(ca.crt, client.key, client.crt)到客户端,制作client.ovpn,启动客户端连接服务器端。 “答案来源于网络,供您参考”

牧明 2019-12-02 02:15:32 0 浏览量 回答数 0

问题

本地Windows不能直接连接服务器桌面

楼下tony 2019-12-01 19:25:54 72 浏览量 回答数 1

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

问题

新手求助-客户端不能连接服务器端

ffan 2019-12-01 21:15:04 6829 浏览量 回答数 2

回答

在这篇博客里,我们最终希望构建一个Websocket集群来实现与客户端的实时通信,比如聊天室。我们当然可以通过简单的demo构建一个Websocket服务器并让所有客户端连接这台机器,但当这个聊天室的交互量非常庞大呢?比如斗鱼的直播弹幕,我去斗鱼看了下请求,从命名也可以看到其建立了一个ws连接,叫做danmuproxy.douyu.com,如下图。 那么问题来了,如果我只使用一台服务器,如何去支持可能有10万人同时加入的这个聊天室呢?显然我们需要一个解决方案,比如将流量负载均衡到不同的服务器上并提供一种通信机制让各个服务器能进行消息同步(不然用户A连上服务器A,用户B脸上服务器B,它们发消息的时候对方都没法收到)。其实从上图的名字来看就知道斗鱼连接的这个danmuproxy.douyu.com中的proxy就大致能推断出他们也是把流量做了一个分发。Websocket集群由于和普通的HTTP服务器的负载均衡不同,上一节也说到了这些Websocket服务器需要共享信息(当然,需要做Session共享的服务器也一样)。这意味着客户端与Websocket服务器的交互是有状态(stateful)的,我们需要把每个客户端的连接数据保存在内存中。而当我们要实现分布式的时候,我们则需要在各个机器上共享这些信息,所以我们需要一个Publish/Subscribe broker(其实broker以前上学讲软件设计体系结构的时候学过,但当时太萌新了没理解)。接下来举个例子。假设我们现在使用Redis作为我们的解决方案,然后我们现在有三台Websocket服务器WS1,WS2和WS3。然后每台服务器上连了三个用户。WS1机器上的其中一个用户发送了某个消息到聊天室,在你的Websocket服务器的逻辑中,你首先会把这个消息存入数据库做一个持久化(比如做历史消息),然后将这个消息根据channelId之类的东西推送至这个聊天室的channel(Websocket的channel的实现会在下一篇中详细讲),我们假设这个channelId叫“The☆World”。现在你把数据安全的存入了DB里,并且你发布了一个事件给你的Pub/Sub broker(Redis channel)来通知其他对此感兴趣的部分(其他Websocket或者API服务器等)。所以之前的另外两个服务器WS2和WS3因为对这部分感兴趣所以他们也通过脚本监听了这一个Redis channel,它们就会得到通知,然后每个服务器就会对DB请求query获取更新然后emit消息给Websocket上对应channel。这就是你们可以看到的,使用Pub/Sub brooker来实现了一个横向扩展的Websocket集群。从这里也可以看到集群具有的有点,高扩展性以及高可用性。实现这次实现使用了我的一台高配阿里云国内服务器和一台比较low的阿里云9元学生服务器以及高配服务器上的redis。Nginx负载均衡首先配置Nginx做负载均衡,下图是我的配置,只是个Demo没做wss相关的。服务器端实现代码都在github上。Demo的代码也很短const WebSocket = require('ws');const publicIp = require('public-ip');const uuidv1 = require('uuid/v1');const redis = require("redis");const config = require('./config'); const sub = redis.createClient(config.DB.REDIS_PORT, config.DB.REDIS_HOST);const pub = redis.createClient(config.DB.REDIS_PORT, config.DB.REDIS_HOST); if (config.DB.REDIS_PASSWORD) { sub.auth(config.DB.REDIS_PASSWORD); pub.auth(config.DB.REDIS_PASSWORD); } const wss = new WebSocket.Server({ port: 2333 }); const ip2name = { '47.94.233.234': '梁王的高配据点', '115.28.68.89': '梁王的9块服务器',} let sockets = {}; wss.on('connection', function connection(ws) { const uuid = uuidv1(); ws.uuid = uuid; sockets[uuid] = ws; ws.on('message', function incoming(message) { // publish消息给其他服务器 pub.publish('channel', `${ws.uuid}>${message}`); console.log(`publish to channel: ${ws.uuid}>${message}`) // 向本服务器的socket广播 wss.clients.forEach(function each(client) { if (client !== ws && client.readyState === WebSocket.OPEN) { client.send(`来自${ws.from || '???'}的用户${ws.uuid}发送了: ${message}`); } }); }); publicIp.v4().then(ip => { console.log(ip); ws.from = ip2name[ip] ? ip2name[ip] : '未知'; ws.send(`你连接的服务器为${ws.from}`); });}); // 监听其他服务器发送的消息sub.on('message', function(channel, message) { console.log(channel ${channel}, ${message}) if (channel == 'channel') { var messageArr = message.split('>'); var uuid = messageArr[0] var wsFrom = sockets[uuid]; var content = messageArr[1]; // 如果socket是非本服务器的 if(!wsFrom) { wss.clients.forEach(function each(client) { client.send(`来自其他服务器的用户${uuid}发送了: ${content}`); }); } } }); sub.subscribe('channel');复制代码效果可以用以下代码在控制台中尝试,服务器后期可能会关。var socket = new WebSocket('ws://websocket-demo.lwio.me'); // Listen for messagessocket.addEventListener('message', function (event) { console.log('收到了', event.data); }); // socket.send('keke')复制代码

hbase小能手 2019-12-02 02:02:15 0 浏览量 回答数 0

回答

FileZilla 是一款免费的跨平台 FTP 应用程序,由 FileZilla Client 和 FileZilla Server 组成。ECS服务器上安装FileZilla Server,提供服务器端的文件上传、存储、下载操作。FileZilla Client用于连接 Server,操作指令发出端。

xwaby 2019-12-02 01:35:32 0 浏览量 回答数 0

问题

在ECS上搭建SoftetherVPN服务,目的为:客户端通过VPN访问公司内网服务器

amaoali 2019-12-01 22:01:44 6245 浏览量 回答数 2

问题

如何做端口映射?

kernelx 2019-12-01 22:02:09 3420 浏览量 回答数 1

问题

连接不上hbase集群

米渣米渣 2019-12-01 22:02:10 1995 浏览量 回答数 0

问题

神奇的问题 程序连接不上mysql 有人碰到过吗??报错

爱吃鱼的程序员 2020-06-14 18:47:48 0 浏览量 回答数 1

问题

阿里云服务器如何访问内网

红烧豆腐 2019-12-01 19:34:30 4094 浏览量 回答数 1

问题

用本地plsql怎么连接linux中的数据库。急急急!!!!

杨冬芳 2019-12-01 20:21:17 1091 浏览量 回答数 1

问题

GPRS设备使用MQTT连接服务器问题

linzhonxue 2019-12-01 21:40:47 3439 浏览量 回答数 2

问题

求助vpn问题

luckyguy 2019-12-01 21:43:34 6115 浏览量 回答数 4

回答

在Linux服务器之间建立信任关系,是很多线上服务系统的基础性工作,这样能便于程序在多台服务器之间自动传输数据,或者方便用户不输入密码就可以在不同的主机间完成登录或者各种操作。 网上关于建立Linux信任关系(ssh trust)的中文文章有一些,但是写得都不太详细,这里汇总了方方面面的资料,把多机信任关系建立方法说说清楚(文/陈运文) 一 建立信任关系的基本操作 基本场景是想从一台Server服务器直接登录另一台,或者将Server服务器的数据不需密码验证直接拷贝至Client服务器,以下我们简称Server服务器为S(待发送的数据文件在这台服务器上),Client服务为C,信任关系的最简单操作方法如下: 1 在S服务器上,进入当前用户根目录下的隐藏目录 .ssh,命令如下: cd ~/.ssh (注:目录名前的点好”.”表示该文件夹是一个特殊的隐藏文件夹,ls命令下默认是看不到的,通过 ls –a 命令观察到) 2 生成S服务器的私钥和公钥: ssh-keygen -t rsa (注:rsa是一种加密算法的名称,此处也可以使用dsa,关于rsa和dsa算法的介绍可见本文后半章节) ssh-keygen生成密钥用于信任关系生成 -此时会显示Generating public/private key pair. 并提示生成的公钥私钥文件的存放路径和文件名,默认是放在 /home/username/.ssh/id_rsa 这样的文件里的,通常不用改,回车就可以 然后Enter passphrase(empty for no passphrase): 通常直接回车,默认不需要口令 Enter same passphrase again: 也直接回车 然后会显式密钥fingerprint生成好的提示,并给出一个RSA加密协议的方框图形。此时在.ssh目录下ls,就可以看到生成好的私钥文件id_rsa和公钥文件id_rsa.pub了 以下是各种补充说明: 注1:如果此时提示 id_rsaalready exists,Overwrite(y/n) 则说明之前已经有人建好了密钥,此时选择n 忽略本次操作就行,可以直接用之前生成好的文件;当然选y覆盖一下也无妨 注2:公钥用于加密,它是向所有人公开的(pub是公开的单词public的缩写);私钥用于解密,只有密文的接收者持有。 3 在Server服务器上加载私钥文件 仍然在.ssh目录下,执行命令: ssh-add id_rsa 系统如果提示:Identity added: id_rsa (id_rsa) 就表明加载成功了 下面有几个异常情况处理: –如果系统提示:could not open a connection to your authentication agent 则需要执行一下命令: ssh-agent bash 然后再执行上述的ssh-add id_rsa命令 –如果系统提示id_rsa: No such file or directory 这是系统无法找到私钥文件id_rsa,需要看看当前路径是不是不在.ssh目录,或者私钥文件改了名字,例如如果建立的时候改成 aa_rsa,则这边命令中也需要相应改一下 -如果系统提示 command not found,那肯定是你命令敲错字符了J -提示Agent admitted failure to sign using the key,私钥没有加载成功,重试ssh-add -注意id_rsa/id_rsa.pub文件不要删除,存放在.ssh目录下 4 把公钥拷贝至Client服务器上 很简单,例如 scp id_rsa.pub user@10.11.xx.xx:~ 5 ssh登录到Client服务器上,然后在Client服务器上,把公钥的内容追加到authorized_keys文件末尾(这个文件也在隐藏文件夹.ssh下,没有的话可以建立,没有关系) cat id_rsa.pub >> ~/.ssh/authorized_keys 以下是各种补充说明,遇到问题时可以参考: 注1:这里不推荐用文件覆盖的方式,有些教程直接scp id_rsa.pub 到Client服务器的authorized_keys文件,会导致之前建的其他信任关系的数据被破坏,追加到末尾是更稳妥的方式; 注2: cat 完以后,Client服务器上刚才拷贝过来的id_rsa.pub文件就不需要了,可以删除或移动到其它地方) 注3:ssh-keygen 命令通过-b参数可以指定生成的密钥文件的长度,如果不指定则默认为1024,如果ssh-keygen –b 4096(最长4096),则加密程度提高,但是生成和验证时间会增加。对一般的应用来说,默认长度已经足够胜任了。如果是rsa加密方式,那么最短长度为768 byte 注4:authorized_keys文件的权限问题。如果按上述步骤建立关系后,仍然要验证密码,并且没有其他报错,那么需要检查一下authorized_keys文件的权限,需要作下修改: chmod g-w authorized_keys OK,现在试试在Server端拷贝一个文件到Client服务器,应该无需交互直接就传过去了。 但是此时从Client传数据到Server服务器,仍然是需要密码验证的。如果需要两台服务器间能直接互传数据,则反过来按上述步骤操作一下就可以了 二 删除服务器间信任关系的方法 如果想取消两台服务器之间的信任关系,直接删除公钥或私钥是没有用的,需要在Client服务器上,打开 ~/.ssh/ authorized_keys 文件,找到对应的服务器的公钥字段并删除 每个段落的开头是ssh-rsa字样,段尾是Server服务器的帐号和ip(如下图红框),需要细心的找一下后删除整段 密钥文件内容和删除Linux服务器间信任关系的方法 三 各种可能遇到的情况和处理方法 –提示 port 22: Connection refused 可能的原因:没有正确安装最新的openssh-server,安装方法如下 sudo apt-get install openssh-server 不支持apt安装的,可以手工下载: wget ftp.ssh.com/pub/ssh/ssh-3.2.9.1.tar.gz –关于目录和文件的权限设置 .ssh目录的权限必须是700,同时本机的私钥的权限必须设置成600: chmod 600 id_rsa 否则ssh服务器会拒绝登录 四 关于RSA和DSA加密算法 在ssh-keygen命令中,-t参数后指定的是加密算法,可以选择rsa或者dsa RSA 取名自算法的三位提出者Ron Rivest, Adi Shamir, and Leonard Adleman的姓名首字母,作为一种非对称加密算法,RSA的安全性基于及其困难的大整数分解(两个素数的乘积的还原问题)。关于RSA算法原理的文章很多,感兴趣的朋友可以找来读一读。 DSA = Digital Signature Algorithm,基于有限域离散对数难题,是Schnorr和ElGamal签名算法的变种,一般用于数字签名和认证,被美国标准局(NIST)采纳为数字签名标准DSS(Digital Signature Standard),based on discrete logarithms computation. DES = Digital Encryption Standard. Obsolete standard. RSA算法好在网络容易实现密钥管理,便进行数字签名,算法复杂,加/解速度慢,采用非对称加密。在实际用于信任关系建立中,这两种方法的差异很微小,可以挑选其一使用。 五 关于SSH协议的介绍 SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task Force)的Network Working Group所制定的一种协议。SSH的主要目的是用来取代传统的telnet和R系列命令(rlogin,rsh,rexec等)远程登陆和远程执行命令的工具,实现对远程登陆和远程执行命令加密。防止由于网络监听而出现的密码泄漏,对系统构成威胁。 ssh协议目前有SSH1和SSH2,SSH2协议兼容SSH1。目前实现SSH1和SSH2协议的主要软件有OpenSSH和SSH Communications Security Corporation 公司的SSH Communications 软件。前者是OpenBSD组织开发的一款免费的SSH软件,后者是商业软件,因此在linux、FreeBSD、OpenBSD、NetBSD等免费类UNIX系统种,通畅都使用OpenSSH作为SSH协议的实现软件。因此,本文重点介绍一下OpenSSH的使用。需要注意的是OpenSSH和SSH Communications的登陆公钥/私钥的格式是不同的,如果想用SSH Communications产生的私钥/公钥对来登入到使用OpenSSH的linux系统需要对公钥/私钥进行格式转换。 第一次登陆后,ssh就会把登陆的ssh指纹存放在用户home目录的.ssh目录的know_hosts文件中,如果远程系统重装过系统,ssh指纹已经改变,你需要把 .ssh 目录下的know_hosts中的相应指纹删除,再登陆回答yes,方可登陆。请注意.ssh目录是开头是”.”的隐藏目录,需要ls –a参数才能看到。而且这个目录的权限必须是700,并且用户的home目录也不能给其他用户写权限,否则ssh服务器会拒绝登陆。如果发生不能登陆的问题,请察看服务器上的日志文件/var/log/secure。通常能很快找到不能登陆的原因。 六 关于ssh_config和sshd_config文件配置的说明 /etc/ssh/ssh_config: Host * 选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。 ForwardAgent no “ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。 ForwardX11 no “ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。 RhostsAuthentication no “RhostsAuthentication”设置是否使用基于rhosts的安全验证。 RhostsRSAAuthentication no “RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。 RSAAuthentication yes “RSAAuthentication”设置是否使用RSA算法进行安全验证。 PasswordAuthentication yes “PasswordAuthentication”设置是否使用口令验证。 FallBackToRsh no “FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。 UseRsh no “UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。 BatchMode no “BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。 CheckHostIP yes “CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。 StrictHostKeyChecking no “StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。 IdentityFile ~/.ssh/identity “IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。 Port 22 “Port”设置连接到远程主机的端口。 Cipher blowfish “Cipher”设置加密用的密码。 EscapeChar ~ “EscapeChar”设置escape字符。 /etc/ssh/sshd_config: Port 22 “Port”设置sshd监听的端口号。 ListenAddress 192.168.1.1 “ListenAddress”设置sshd服务器绑定的IP地址。 HostKey /etc/ssh/ssh_host_key “HostKey”设置包含计算机私人密匙的文件。 ServerKeyBits 1024 “ServerKeyBits”定义服务器密匙的位数。 LoginGraceTime 600 “LoginGraceTime”设置如果用户不能成功登录,在切断连接之前服务器需要等待的时间(以秒为单位)。 KeyRegenerationInterval 3600 “KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。 PermitRootLogin no “PermitRootLogin”设置root能不能用ssh登录。这个选项一定不要设成“yes”。 IgnoreRhosts yes “IgnoreRhosts”设置验证的时候是否使用“rhosts”和“shosts”文件。 IgnoreUserKnownHosts yes “IgnoreUserKnownHosts”设置ssh daemon是否在进行RhostsRSAAuthentication安全验证的时候忽略用户的“$HOME/.ssh/known_hosts” StrictModes yes “StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。 X11Forwarding no “X11Forwarding”设置是否允许X11转发。 PrintMotd yes “PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。 SyslogFacility AUTH “SyslogFacility”设置在记录来自sshd的消息的时候,是否给出“facility code”。 LogLevel INFO “LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。 RhostsAuthentication no “RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够了。 RhostsRSAAuthentication no “RhostsRSA”设置是否允许用rhosts或“/etc/hosts.equiv”加上RSA进行安全验证。 RSAAuthentication yes “RSAAuthentication”设置是否允许只有RSA安全验证。 PasswordAuthentication yes “PasswordAuthentication”设置是否允许口令验证。 PermitEmptyPasswords no “PermitEmptyPasswords”设置是否允许用口令为空的帐号登录。 AllowUsers admin “AllowUsers”的后面可以跟着任意的数量的用户名的匹配串(patterns)或user@host这样的匹配串,这些字符串用空格隔开。主机名可以是DNS名或IP地址。

boxti 2019-12-02 01:27:05 0 浏览量 回答数 0

问题

fastdfs-client-java连接不上部署在阿里云的FastDFS服务器

刘刚_ 2020-05-23 21:05:46 1 浏览量 回答数 0

问题

手机如何远程连接服务器

梦丫头 2019-12-01 21:48:17 13360 浏览量 回答数 3

回答

ssl 模块能为底层socket连接添加SSL的支持。 ssl.wrap_socket() 函数接受一个已存在的socket作为参数并使用SSL层来包装它。 例如,下面是一个简单的应答服务器,能在服务器端为所有客户端连接做认证。 from socket import socket, AF_INET, SOCK_STREAM import ssl KEYFILE = 'server_key.pem' # Private key of the server CERTFILE = 'server_cert.pem' # Server certificate (given to client) def echo_client(s): while True: data = s.recv(8192) if data == b'': break s.send(data) s.close() print('Connection closed') def echo_server(address): s = socket(AF_INET, SOCK_STREAM) s.bind(address) s.listen(1) # Wrap with an SSL layer requiring client certs s_ssl = ssl.wrap_socket(s, keyfile=KEYFILE, certfile=CERTFILE, server_side=True ) # Wait for connections while True: try: c,a = s_ssl.accept() print('Got connection', c, a) echo_client(c) except Exception as e: print('{}: {}'.format(e.__class__.__name__, e)) echo_server(('', 20000)) 下面我们演示一个客户端连接服务器的交互例子。客户端会请求服务器来认证并确认连接: >>> from socket import socket, AF_INET, SOCK_STREAM >>> import ssl >>> s = socket(AF_INET, SOCK_STREAM) >>> s_ssl = ssl.wrap_socket(s, cert_reqs=ssl.CERT_REQUIRED, ca_certs = 'server_cert.pem') >>> s_ssl.connect(('localhost', 20000)) >>> s_ssl.send(b'Hello World?') 12 >>> s_ssl.recv(8192) b'Hello World?' >>> 这种直接处理底层socket方式有个问题就是它不能很好的跟标准库中已存在的网络服务兼容。 例如,绝大部分服务器代码(HTTP、XML-RPC等)实际上是基于 socketserver 库的。 客户端代码在一个较高层上实现。我们需要另外一种稍微不同的方式来将SSL添加到已存在的服务中: 首先,对于服务器而言,可以通过像下面这样使用一个mixin类来添加SSL: import ssl class SSLMixin: ''' Mixin class that adds support for SSL to existing servers based on the socketserver module. ''' def __init__(self, *args, keyfile=None, certfile=None, ca_certs=None, cert_reqs=ssl.CERT_NONE, **kwargs): self._keyfile = keyfile self._certfile = certfile self._ca_certs = ca_certs self._cert_reqs = cert_reqs super().__init__(*args, **kwargs) def get_request(self): client, addr = super().get_request() client_ssl = ssl.wrap_socket(client, keyfile = self._keyfile, certfile = self._certfile, ca_certs = self._ca_certs, cert_reqs = self._cert_reqs, server_side = True) return client_ssl, addr 为了使用这个mixin类,你可以将它跟其他服务器类混合。例如,下面是定义一个基于SSL的XML-RPC服务器例子: # XML-RPC server with SSL from xmlrpc.server import SimpleXMLRPCServer class SSLSimpleXMLRPCServer(SSLMixin, SimpleXMLRPCServer): pass Here's the XML-RPC server from Recipe 11.6 modified only slightly to use SSL: import ssl from xmlrpc.server import SimpleXMLRPCServer from sslmixin import SSLMixin class SSLSimpleXMLRPCServer(SSLMixin, SimpleXMLRPCServer): pass class KeyValueServer: _rpc_methods_ = ['get', 'set', 'delete', 'exists', 'keys'] def __init__(self, *args, **kwargs): self._data = {} self._serv = SSLSimpleXMLRPCServer(*args, allow_none=True, **kwargs) for name in self._rpc_methods_: self._serv.register_function(getattr(self, name)) def get(self, name): return self._data[name] def set(self, name, value): self._data[name] = value def delete(self, name): del self._data[name] def exists(self, name): return name in self._data def keys(self): return list(self._data) def serve_forever(self): self._serv.serve_forever() if __name__ == '__main__': KEYFILE='server_key.pem' # Private key of the server CERTFILE='server_cert.pem' # Server certificate kvserv = KeyValueServer(('', 15000), keyfile=KEYFILE, certfile=CERTFILE) kvserv.serve_forever() 使用这个服务器时,你可以使用普通的 xmlrpc.client 模块来连接它。 只需要在URL中指定 https: 即可,例如: >>> from xmlrpc.client import ServerProxy >>> s = ServerProxy('https://localhost:15000', allow_none=True) >>> s.set('foo','bar') >>> s.set('spam', [1, 2, 3]) >>> s.keys() ['spam', 'foo'] >>> s.get('foo') 'bar' >>> s.get('spam') [1, 2, 3] >>> s.delete('spam') >>> s.exists('spam') False >>> 对于SSL客户端来讲一个比较复杂的问题是如何确认服务器证书或为服务器提供客户端认证(比如客户端证书)。 不幸的是,暂时还没有一个标准方法来解决这个问题,需要自己去研究。 不过,下面给出一个例子,用来建立一个安全的XML-RPC连接来确认服务器证书: from xmlrpc.client import SafeTransport, ServerProxy import ssl class VerifyCertSafeTransport(SafeTransport): def __init__(self, cafile, certfile=None, keyfile=None): SafeTransport.__init__(self) self._ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1) self._ssl_context.load_verify_locations(cafile) if certfile: self._ssl_context.load_cert_chain(certfile, keyfile) self._ssl_context.verify_mode = ssl.CERT_REQUIRED def make_connection(self, host): # Items in the passed dictionary are passed as keyword # arguments to the http.client.HTTPSConnection() constructor. # The context argument allows an ssl.SSLContext instance to # be passed with information about the SSL configuration s = super().make_connection((host, {'context': self._ssl_context})) return s # Create the client proxy s = ServerProxy('https://localhost:15000', transport=VerifyCertSafeTransport('server_cert.pem'), allow_none=True) 服务器将证书发送给客户端,客户端来确认它的合法性。这种确认可以是相互的。 如果服务器想要确认客户端,可以将服务器启动代码修改如下: if __name__ == '__main__': KEYFILE='server_key.pem' # Private key of the server CERTFILE='server_cert.pem' # Server certificate CA_CERTS='client_cert.pem' # Certificates of accepted clients kvserv = KeyValueServer(('', 15000), keyfile=KEYFILE, certfile=CERTFILE, ca_certs=CA_CERTS, cert_reqs=ssl.CERT_REQUIRED, ) kvserv.serve_forever() 为了让XML-RPC客户端发送证书,修改 ServerProxy 的初始化代码如下: # Create the client proxy s = ServerProxy('https://localhost:15000', transport=VerifyCertSafeTransport('server_cert.pem', 'client_cert.pem', 'client_key.pem'), allow_none=True)

哦哦喔 2020-04-17 17:17:21 0 浏览量 回答数 0

问题

netty客户端重连的问题?报错

爱吃鱼的程序员 2020-06-20 16:48:13 0 浏览量 回答数 1

问题

MySQL 8.0上的phpMyAdmin?mysql

保持可爱mmm 2020-05-16 20:57:55 0 浏览量 回答数 1

回答

已解决阿里云上的集群是以内网连接的,当下载或者上传的时候,服务器返回给客户端的ip是自身内网ip,所以无法实现上传下载猜想解决方法:1.hadoop集群的搭建采用外网连接(没尝试过)2.想办法让自己连接的时候连内网,返回ip的时候返回外网ip(没尝试过,有印象有人提到过相关)3.在windows上设置master和slave等ip映射,Configuration设置"dfs.client.use.datanode.hostname"为true,让返回的ip为hostname的形式,这样hadoop集群自身运行的时候访问内网,客户端也可以根据hostname用外网访问。(已验证)

ycl0510 2019-12-02 00:27:38 0 浏览量 回答数 0

回答

我想你对什么是插座感到困惑。输入输出端。您在“客户端”标题下定义的代码不是客户端,而是在服务器上运行并可以代表服务器发出的外部进程。 在我看来,一切都很顺利。这个外部进程通过服务器发送到客户端。您期望服务器上的my_event处理程序将接收此事件,但此事件将以另一种方式进行,客户机将接收此事件。根据您对问题的描述,似乎您没有连接任何客户端,因此消息不会发送到任何地方。 如果希望用Python编写一个合适的客户机,那么可以删除不需要的消息队列,而是使用client或AsyncClient类在Python -socketio包中编写客户机。

kun坤 2019-12-29 21:32:11 0 浏览量 回答数 0

问题

公司的maven项目,检出到本地之后运行不起来?报错

爱吃鱼的程序员 2020-06-09 15:42:23 0 浏览量 回答数 1

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:02 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:00 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站