首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ssh隧道:我可以使用CLI、DBeaver或Paramiko访问ssh网关,但不能访问ssh隧道。

Ssh隧道:我可以使用CLI、DBeaver或Paramiko访问ssh网关,但不能访问ssh隧道。
EN

Stack Overflow用户
提问于 2021-06-25 17:15:28
回答 1查看 582关注 0票数 0

我试图通过ssh隧道访问PostgreSQL数据库。不幸的是,我不能通过使用ssh隧道的Python脚本来完成这个任务。

代码语言:javascript
复制
    ssh -p 1322 admin@xx.xxx.xxx.xx -L 6432:xxxxxxxxxxxxx.xxxxx.amazonaws.com:5432 -i /home/xxxxx/xxxxxxx.pem
  • 在Python脚本中,使用paramiko,我可以连接到ssh网关:
代码语言:javascript
复制
    import paramiko
    
    mypkey = paramiko.RSAKey.from_private_key_file('/home/xxxxx/xxxxxxx.pem')
    transport = paramiko.Transport(('xx.xxx.xxx.xx', 1322))
    transport.connect(username='admin', pkey=mypkey)
    print('Connected!')
    transport.close()
  • 但是当试图用ssh隧道访问数据库时,它不起作用.我的Python脚本:
代码语言:javascript
复制
    import sshtunnel
    import paramiko
    mypkey = paramiko.RSAKey.from_private_key_file('/home/xxxxx/xxxxxxx.pem')

    server = sshtunnel.open_tunnel(
        ('xx.xxx.xxx.xx', 1322),
        ssh_username='admin',
        ssh_pkey=mypkey,
        remote_bind_address=('xxxxxxxxxxxxx.xxxxx.amazonaws.com', 6432),
        local_bind_address=('xxxxxxxxxxxxx.xxxxx.amazonaws.com', 5432),
        debug_level='TRACE',
    )
    server.start()
    server.stop()

我收到以下错误消息:

代码语言:javascript
复制
2021-06-25 18:49:31,520| INF | MainThrea/1060@sshtunnel | 1 keys loaded from agent
2021-06-25 18:49:31,539| DEB | MainThrea/1310@sshtunnel | Private key file (/home/xxxxxxxx/.ssh/id_rsa, <class 'paramiko.rsakey.RSAKey'>) successfully loaded
2021-06-25 18:49:31,539| INF | MainThrea/1117@sshtunnel | 2 key(s) loaded
2021-06-25 18:49:31,539| INF | MainThrea/0981@sshtunnel | Connecting to gateway: xx.xxx.xxx.xx:1322 as user 'admin'
2021-06-25 18:49:31,539| DEB | MainThrea/0984@sshtunnel | Concurrent connections allowed: True
2021-06-25 18:49:31,539| DEB | MainThrea/1401@sshtunnel | Trying to log in with key: b'a5166fbdcdc61d04cd7xxxxxxxxxxxx'
2021-06-25 18:49:31,539| DEB | MainThrea/1185@sshtunnel | Connecting via proxy: 'xx.xxx.xxx.xx'
2021-06-25 18:49:46,579| ERR |  Thread-1/1819@transport | Exception: Error reading SSH protocol banner
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport | Traceback (most recent call last):
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport |   File "/usr/local/lib/python3.7/site-packages/paramiko/transport.py", line 2211, in _check_banner
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport |     buf = self.packetizer.readline(timeout)
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport |   File "/usr/local/lib/python3.7/site-packages/paramiko/packet.py", line 380, in readline
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport |     buf += self._read_timeout(timeout)
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport |   File "/usr/local/lib/python3.7/site-packages/paramiko/packet.py", line 622, in _read_timeout
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport |     raise socket.timeout()
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport | socket.timeout
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport | 
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport | During handling of the above exception, another exception occurred:
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport | 
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport | Traceback (most recent call last):
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport |   File "/usr/local/lib/python3.7/site-packages/paramiko/transport.py", line 2039, in run
2021-06-25 18:49:46,600| ERR |  Thread-1/1817@transport |     self._check_banner()
2021-06-25 18:49:46,601| ERR |  Thread-1/1817@transport |   File "/usr/local/lib/python3.7/site-packages/paramiko/transport.py", line 2216, in _check_banner
2021-06-25 18:49:46,601| ERR |  Thread-1/1817@transport |     "Error reading SSH protocol banner" + str(e)
2021-06-25 18:49:46,601| ERR |  Thread-1/1817@transport | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
2021-06-25 18:49:46,601| ERR |  Thread-1/1817@transport | 
2021-06-25 18:49:46,601| ERR | MainThrea/1223@sshtunnel | Could not connect to gateway xx.xxx.xxx.xx:1322 : Error reading SSH protocol banner
Traceback (most recent call last):
  File "connect_jarvis_db.py", line 41, in <module>
    server.start()
  File "/usr/local/lib/python3.7/site-packages/sshtunnel.py", line 1332, in start
    reason='Could not establish session to SSH gateway')
  File "/usr/local/lib/python3.7/site-packages/sshtunnel.py", line 1174, in _raise
    raise exception(reason)
sshtunnel.BaseSSHTunnelForwarderError: Could not establish session to SSH gateway

我做了很多试验,但都没有成功。关于错误消息,我看到了“两个键被加载”。我想知道这是否是这个问题的原因,但如果是,我不知道如何使用xxxx.pem密钥文件.

你有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-29 07:12:26

好的,我终于找到了解决方案:即使我指定了.pem密钥文件,我的私钥文件(在.ssh文件夹中)也被读取了(参见第2行),这导致了问题的发生。解决办法是增加:

代码语言:javascript
复制
ssh_config_file=None

在调用ssh隧道时的选项中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68134893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档