标签: ssh-tunnel

如何从反向ssh隧道获取远程IP地址

我有一个Apache Web服务器通过反向ssh隧道在本地机器上运行,即:

ssh -R*:80:local_machine:8080用户名@ gateway_machine

换句话说,来自gateway_machine上端口80的所有流量都将发送到local_machine上的端口8080.

出于监控目的,我希望知道连接到gateway_machine的远程客户端的IP地址.但是,我的本地Apache服务器会看到来自gateway_machine的IP地址的所有流量.

我的问题:有没有办法设置在gateway_machine上运行的ssh服务器,以便它使用实际的远程IP地址将所有流量发送到local_machine?

ssh ssh-tunnel

5
推荐指数
1
解决办法
2111
查看次数

通过 SSH 隧道在 PostgreSQL 上进行身份验证失败

我有 PostgreSQL 服务器,一台单独的计算机是它的客户端。他们在一个网络中。如果我使用 psql 命令

psql --host db_ip_address --port 5432 --user user base_name

连接正常,一切正常。

但是,如果我将打开到数据库服务器的 SSH 隧道,例如:

ssh -L 63333:localhost:5432 root@db_ip_address

然后尝试做同样的事情:

psql --host localhost --port 63333 --user user base_name

比它突然输出错误信息:

psql: FATAL: Ident authentication failed for user "user"

服务器上的 pg_hba.conf 有以下几行:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             192.168.0.49/32         trust
host    all             all             192.168.0.50/32         trust …
Run Code Online (Sandbox Code Playgroud)

postgresql ssh ssh-tunnel

5
推荐指数
1
解决办法
1781
查看次数

调试端口转发以远程使用Jupyter笔记本

我想在远程计算机上使用Jupyter笔记本.设置如下:我有我的家用笔记本电脑,它可以ssh到我大学网络上的特定计算机(例如gateway.myuniv.edu).一旦我登录gateway.myuniv.edu,我可以ssh到我想运行Jupyter笔记本服务器的计算机(例如cluster.myuniv.edu).

有效:我可以在网关上运行服务器,并使用本地端口转发从我的笔记本电脑连接到服务器,如下所示:

gateway.myuniv.edu:$ jupyter notebook --no-browser --port 8888

在我的笔记本上: $ ssh -v -N -L 9000:localhost:8888 myusername@gateway.myuniv.edu

然后在我的笔记本电脑的浏览器上打开网址: http://localhost:9000

什么行不通:我不想在网关上运行服务器,因为我不能在那里进行繁重的计算.我试着做以下事情:

cluster.myuniv.edu:$ jupyter notebook --no-browser --port 8888

在我的笔记本上: $ ssh -v -N -L 9000:cluster.myuniv.edu:8888 myusername@gateway.myuniv.edu

然后在我的笔记本电脑的浏览器上打开网址:http://localhost:9000.这不起作用:SSH表示连接被拒绝.

我不明白为什么会发生这种情况以及如何调试它会很乐意提供任何帮助.谢谢!

ssh portforwarding ssh-tunnel jupyter jupyter-notebook

5
推荐指数
1
解决办法
1526
查看次数

pycharm远程调试:找不到空闲的socket

我正在尝试使用远程调试,但在 pycharm 上出现此错误:

运行 remoteTest 时出错:找不到空闲的套接字

我的远程主机是 Ubuntu |(使用用户名和密码),我的本地主机是 windows,我遵循了以下教程:https : //blog.jetbrains.com/pycharm/2010/12/python-remote-debug-with-pycharm/ 我在腻子上使用了 ssh 隧道连接到服务器。

import pydevd
pydevd.settrace('localhost', port=21000, stdoutToServer=True, stderrToServer=True)
Run Code Online (Sandbox Code Playgroud)

remote-debugging ssh-tunnel pycharm python-2.7 ubuntu-14.04

5
推荐指数
0
解决办法
1051
查看次数

sshfs 尝试后未配置设备

在 Mac 上使用 sshfs 后,我无法再看到我的用户目录。

当我打开终端窗口时,我看到以下内容:

Last login: Mon May 22 10:54:30 on ttys003
mkdir: /Users/<username>/.bash_sessions: Device not configured
-bash: /Users/<username>/.bash_profile: Device not configured
touch: /Users/<username>/.bash_sessions/35166655-583B-47CC-9BCF-5E785DD5E46E.historynew: Device not configured
Run Code Online (Sandbox Code Playgroud)

有没有什么办法解决这一问题?

干杯保罗

tunnel user-profile ssh-tunnel macos-sierra

5
推荐指数
1
解决办法
4462
查看次数

GCP:您没有足够的权限通过 SSH 连接到此实例

我在一个 GCP 项目上有一个(非管理员)帐户。

当我启动 Dataproc 集群时,GCP 会启动 3 个虚拟机。当我尝试通过SSH(在浏览器中)访问其中一个 VM 时,出现以下错误:

在此处输入图片说明

我尝试添加推荐的权限,但无法添加iam.serviceAccounts.actAs权限。

在此处输入图片说明

知道如何解决这个问题吗?我通读了 GCP 文档,但找不到解决方案。我有以下与我的帐户相关联的角色:

在此处输入图片说明

ssh-tunnel google-cloud-console google-cloud-platform google-cloud-dataproc

5
推荐指数
2
解决办法
4210
查看次数

如何使用 2FA 进行 python SSH tunneling?

我正在尝试编写一个连接到数据库的 python 脚本,但是只有当您首先通过 SSH 连接到堡垒主机时才能访问该数据库。从命令行,这是我必须做的来设置隧道:

$ ssh -i /path/to/my/key/file.pem -A -L 3307:mydb1.fsd23rqr.us-east-1.rds.amazonaws.com:3306 my_ssh_username1@my-bastion-host.without.2fa
[ec2-user@ip-X-X-X-X ~]$ 
Run Code Online (Sandbox Code Playgroud)

我已经使用这个sshtunnel 库创建了一个 python 脚本来做同样的事情。有用:

#!/usr/bin/env python
from sshtunnel import SSHTunnelForwarder
import MySQLdb as db
import pandas as pd

print('\nAbout to try connecting')
with SSHTunnelForwarder(
    ('my-ssh-host.without.2fa', 22),
    ssh_username='my_ssh_username1',
    ssh_pkey='/path/to/my/key/file.pem',
    remote_bind_address=('mydb1.fsd23rqr.us-east-1.rds.amazonaws.com', 3306),
    local_bind_address=('0.0.0.0', 3307)
) as tunnel:
    print "Connection Established"
    print pd.read_sql_query(
        "select 'Hello' from dual",
        db.connect(
            host='127.0.0.1',
            port=tunnel.local_bind_port,
            user='my_db_username1',
            passwd='****************',
            db='my_db_instance_1'
        )
    )
Run Code Online (Sandbox Code Playgroud)

产生:

About to try connecting
Connection Established
   Hello
0  Hello
Run Code Online (Sandbox Code Playgroud)

但现在我需要使用不同的数据库和堡垒组合。这个堡垒有 …

python ssh-tunnel multi-factor-authentication

5
推荐指数
1
解决办法
1157
查看次数

连接到远程数据库脚本后不退出

我连接到远程数据库。为此,我正在使用 sshtunnel。我没有问题连接到数据库并访问数据。

我的问题是,我的脚本在所有操作之后都没有退出。我创建连接、下载数据、打印数据、停止 ssh 连接、打印“退出”。该脚本在 server.stop() 行停止工作并且不打印“停止”。我需要中断它以停止运行此代码。

这是代码:

from sshtunnel import SSHTunnelForwarder
from sqlalchemy import create_engine
import pandas as pd


server = SSHTunnelForwarder(
    ('host', 22),
    ssh_password='password',
    ssh_username='username',
    remote_bind_address=('127.0.0.1', 3306)
)
server.start()

engine = create_engine(
    'mysql+mysqldb://db_user:db_pass@127.0.0.1:{}/temps'.format(server.local_bind_port))

query = 'SELECT * FROM temp'

df = pd.read_sql(query, engine)
print(df.head())
print(df.tail())

server.stop()
print('stop')
Run Code Online (Sandbox Code Playgroud)

此脚本不打印“停止”。

问题:为什么这段代码不能停止工作?

编辑:

我加了

trace_logger = create_logger(loglevel="TRACE")

在此之后,我注意到一些有趣的事情。带有数据传输的代码不包含一行:传输已关闭。我在没有发送 sql 查询的情况下检查了我的代码,脚本已正确完成。

带数据传输的日志

2018-10-07 18:41:43,274| WAR | MainThrea/0967@sshtunnel | Could not read SSH configuration file: ~/.ssh/config
2018-10-07 18:41:43,275| INF | MainThrea/0993@sshtunnel | 0 …
Run Code Online (Sandbox Code Playgroud)

ssh-tunnel python-3.x pandas

5
推荐指数
1
解决办法
1875
查看次数

通过SSH为远程Python解释器配置Visual Studio代码

我有一个带有ArchLinux和Python的Vagrant框,该框针对每个项目使用虚拟环境(通过使用特定的Python版本)。我希望配置VSC来运行/调试这些Python项目。我已经挂载了包含我的项目的目录(使用sshfs),所以我不必担心同步。

使用PyCharm时,配置仅在其IDE中。如何使用SSH为VSC配置它?使用Python需要其他哪些插件?

提前致谢。

PS1:PyCharm是一个很棒的工具,但是它占用大量资源,RAM接近1GB。

PS2:我已经阅读了这篇文章,但是对我来说还不清楚,一个例子更有用。

python configuration remote-debugging ssh-tunnel visual-studio-code

5
推荐指数
1
解决办法
3103
查看次数

使用tunnel-ssh通过ssh通过nodeJS中的mongoose通过SSH连接到远程服务器mongoDB

我试图通过SSH连接到远程服务器mongoDB并进行了所提供的配置

import tunnel from 'tunnel-ssh';

const config = {
    username: 'username',
    Password: 'password',
    host: process.env.SSH_SERVER, //192.168.9.104
    port: 22,
    dstHost: 'localhost',
    dstPort: process.env.DESTINATION_PORT, //27017
    localHost: '127.0.0.1',
    localPort: 27018
};
Run Code Online (Sandbox Code Playgroud)

这是已定义的配置,在这里我需要连接到远程服务器192.168.9.104。因此,将特定的主机选择为SSH主机。提供了相同的用户名和密码。并且建立的连接如下。

class DB {
    initDB() {
        tunnel(config, (error, server) => {
            if (error) {
                console.log('SSH connection error: ' + error);
            }

            const url = 'mongodb://127.0.0.1:27018/myDBname';
            mongoose.connect(url, { useNewUrlParser: true });
            mongoose.plugin(toJson);
            mongoose.plugin(setProperties);

            var db = mongoose.connection;
            db.on('error', console.error.bind(console, 'DB connection error:'));
            db.once('open', function() {
                console.log('DB connection successful');
            });
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当调用db.init()函数时,将弹出以下错误消息 …

ssh mongoose mongodb node.js ssh-tunnel

5
推荐指数
1
解决办法
69
查看次数