我正在寻找一个解决scheme,让我从中央服务器远程访问多个设备。 这些设备预装了定制软件,但其networking条件将是未知的,可能在3G或NAT受限的WiFi环境下。 我想到的第一件事是使用反向SSH连接(通过systemd服务使用ssh -R或autoSSH),尽pipe这意味着每个设备都有一个redirect端口。 这不是一个真正的问题,我怀疑我会有超过50K设备在同一时间运行。 但是,我正在寻找一个更容易pipe理的基础架构,并且更具可扩展性,以防万一。 我试图调查其他问题,我无法find关于这个问题的答案。 我看到一些人推荐使用VPN隧道,将每个设备连接到中心设备。 如果有人能解释它是如何工作的,这将是很好的,我真的不知道如何工作,我在哪里设置每个设备ID /名称,以及如何启动远程连接,一旦它正在运行。 任何其他方法或解决scheme也是受欢迎的。 注1:我认为一个接一个的远程访问就足够了,但如果所有可用的(以便将命令发送到一组设备)也将是有帮助的(但是,如果一个解决scheme在你的脑海里,不要停止回答)。 注2:系统是基于Debian的。 (Raspbian,如果需要也可以是Ubuntu)
我想从我的家用电脑(用户: antonio@antonio-home )ssh到serveruser@serverhost密钥serveruser@serverhost 。 我使用ssh-keygen -t rsa生成了rsa-key并上传到服务器,但仍然要求input密码。 如果我将在serverhost上创build用户antonio ,并将我的id_rsa.pub复制到用户antonio主目录中,则可以成功执行ssh antonio@serverhost 。 但是, ssh serveruser@serverhost不工作(id_rsa.pub serveruser home目录中) 我究竟做错了什么? 也许我应该指定用户名,而我生成rsa密钥? 就像ssh-keygen -t rsa –user serveruser ? 我用ssh-copy-id发送密钥到服务器,也试过做cat ~/.ssh/id_rsa_serveruser.pub |ssh -lserveruser <hostname or IP of server> "cat >> .ssh/authorized_keys" 服务器上的文件权限: drwx—— .ssh和-rw——- authorized_keys 。 serveruser是这个文件和dirs的所有者。 在服务器上的文件authorized_keys : ssh-rsa AAAAB3NzaC1yc2EA….AAADAQA antonio@Antonio-Home 我可以看到,在这个文件的末尾仍然有错误的用户名: antonio@Antonio-Home 。 也许,有问题吗? 我试图设置,而不是设置密钥的密码 – 没有区别 Antonio-Home:.ssh […]
我有一些testing服务器在Openstack的堡垒后面运行。 testing堆栈经常被删除和创build。 创build堆栈后,我运行一组Ansible脚本来安装和configuration服务器。 我有几乎完全自动化的过程,但我似乎无法让远程主机在堡垒主机后面ssh-keyscan工作。 这是我在我的~/.ssh/config Host bastion HostName 1.2.3.4 User myuser IdentityFile ~/.ssh/private_key.pem Host remote-host1 HostName 192.168.0.123 User myuser IdentityFile ~/.ssh/private_key.pem ProxyCommand ssh -W %h:%p bastion 如果我尝试运行ssh-keyscan remote-host1我得到 getaddrinfo remote-host1: Name or service not known 运行ssh remote-host1但会提示 The authenticity of host '192.168.0.123 (<no hostip for proxy command>)' can't be established. ECDSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. […]
这是一个奇怪的。 我问了一位同事,他也对此感到惊讶。 我们有一个shell脚本,可以执行say_hello.sh : #!/bin/sh echo -n "Please enter your name: " read uname echo "Hello, ${uname}." 所以现在如果我们: 打开一个新的PuTTY会话并进行身份validation(比如user1 )。 运行脚本(在提示处留下)。 右键单击PuTTY标题栏,然后selectDuplicate Session 。 再次以user1身份validation。 closures第一个PuTTY窗口(在1打开)。 寻找shell脚本(例如在第二个窗口中): ps -ef|grep "[s]ay_hello"我很惊讶地发现脚本和整个loginshell实际上还在。 我会注意到,如果在步骤3中select“ New Session…则不会重复此行为。 这是我忘记的PuTTY隐藏文档function吗? 编辑:请参阅下面的答案。
我正在使用pam_python模块来loggingSSH尝试中使用的用户名和密码。 在/etc/pam.d/sshd我加了这行: auth requisite pam_python.so /lib64/security/pwreveal.py 这是/lib64/security/pwreveal.py : import crypt, spwd, syslog def auth_log(msg): """Send errors to default auth log""" syslog.openlog(facility=syslog.LOG_AUTH) syslog.syslog("SSH Attack Logged: " + msg) syslog.closelog() def check_pw(user, password): auth_log("User: " + user + " Password: " + password) """Check the password matches local unix password on file""" # try: hashed_pw = spwd.getspnam(user)[1] […]
我正在为使用rsync的服务器执行备份策略。 我遵循本教程,并限制使用SSH密钥,我使用这个validate-rsync.sh脚本,我也可以运行没有问题: #!/bin/sh case "$SSH_ORIGINAL_COMMAND" in *\&*) echo "Rejected" ;; *\(*) echo "Rejected" ;; *\{*) echo "Rejected" ;; *\;*) echo "Rejected" ;; *\<*) echo "Rejected" ;; *\>*) echo "Rejected" ;; *\`*) echo "Rejected" ;; *\|*) echo "Rejected" ;; rsync\ –server*) $SSH_ORIGINAL_COMMAND ;; *) echo "Rejected" ;; esac authorized_keys文件的开始部分如下所示: command="/home/$USERNAME/validate-rsync.sh" ssh-rsa…. 据我所知,我不应该通过SSH(从备份服务器)远程连接,然后执行mkdir xx 。 但不知何故,我仍然可以做到。 可能是什么问题呢? […]
我正尝试使用SSH隧道从我的MySQL GUI(Sequel Pro,如果有要求)连接到MySQL。 但是,我不断收到以下错误(mysql.log): [注意]中止连接98到db:'example'user:'example_user'host:'localhost'(读取通信包时出错) 我的连接设置如下所示: SSH主机:example.com SSH端口:22 SSH用户:example_user SSH通行证:******** 数据库主机:127.0.0.1 数据库用户:example_user 数据库密码:******* 数据库名称:例子 DB端口:3306 我可以连接到SSH没有问题。 我也可以从SSH里面连接MySQL(使用mysql -u example_user -p -h 127.0.0.1 ) 但是,隧道不工作。 我在sshd_config中有AllowTcpForwarding yes 。 MySQLconfiguration有bind-address = 127.0.0.1 。 我在我的服务器中使用16.04 LTS和MySQL社区版。 我究竟做错了什么? 这是我第一次看到这个问题。
我在我的EC2实例上启用了UFW,然后执行以下步骤: abhi@my-ip-address:~$ sudo ufw default deny incoming abhi@my-ip-address:~$ sudo ufw allow 2200/tcp abhi@my-ip-address:~$ sudo ufw allow 80/tcp abhi@my-ip-address:~$ sudo ufw allow 123/udp 我这样做很匆忙,并忘记打开服务器上的port 22以启用SSH访问。 在做了一些研究之后,我发现我可以从我的AWS控制台获得另一个端口号,然后我可以使用SSH端口号连接到服务器。 所以我的Security Group选项卡看起来像这样: 然后我使用以下命令从本地机器ssh进入我的ec2实例: ssh -p 2200 -i photosite-app.pem ubuntu @ my-ec2-ip 但是得到以下错误信息: ssh:连接到主机xx.xx.xx.xx端口2200:连接被拒绝 我是一个新手,只有晚了,才意识到我的错误! 无论如何,我可以使用不同的端口ssh到我的EC2实例? 任何帮助表示赞赏! 谢谢 :) 编辑:1也试图与80端口ssh: ~/.ssh » ssh -p 80 -i photosite-app.pem [email protected] ssh_exchange_identification: Connection closed […]
我有一个应用程序运行在服务器上的端口xxxx。 我可以使用ip和端口yyyy这样login到服务器 ssh user@ip -p yyyy 我需要创build一个tcp连接到端口xxxx上运行的应用程序。 我做了这样的事情 ssh -nNT -L <localport>:ip:xxxx user@ip -p yyyy 但是,当本地应用程序连接到本地端口时,这些消息永远不会到达远程应用程序。 我需要做些什么才能做到这一点?
一位客户要求我设置一个安全的FTP服务器(使用openSSH或FreeSSHd的SFTP)。 这个新服务器将通过configuration为只允许端口22的防火墙。 这可能听起来很奇怪,但出于安全原因,他们宁愿不打开防火墙上的其他端口。 他们询问服务器是否可以使用端口22作为服务器本身,也可以使用客户端。 服务器运行的是Windows Server 2008 64(带有freeSSH / OpenSSH) 客户端运行Windows XP(使用putty / winscp) 我可以使用端口22而不是通常使用的大端口池吗? (用于连接和数据传输) 如果没有,我怎样才能configurationSFTP服务器使用不同的端口? 有没有一个特定的命令来设置它或freeSSH / openSSH手册? 不同的操作系统是否也会造成我以后可能面对的其他问题?