マスター接続とポート転送で二要素SSH認証を回避しますか?


8

問題1.0

2要素認証のみをサポートするサーバーで作業しています(キーペア認証は無効になっています)。そのため、SFTPクライアントがファイルをアップロードするたびに、トークンを要求されます... 3分後、それはnot_very_nice UXになります。

ソリューション1.0

それで、SSH多重化について学び、1つのマスター接続を手動で(ターミナルから)開くことができ、他のすべてのssh接続を次のように多重化できます。

$ ssh example_com_master
Verification code: (/me enters the token code)
Password: (/me enters my pass)
Welcome to Ubuntu 14.04 blah blah....
Last login: Wed Oct  1 11:24:15 2014 from 12.34.56.78
$

次に、別の端末から、または別のソフトウェアによって:

$ ssh my.example.com
Last login: Wed Oct  1 16:34:45 2014 from 12.34.56.78
$ 

したがって、ミッションは完了し、2FAトークンを入力する必要はなくなりました。そして、パスワードはありません。それは、SSH FTWです。

〜/ .ssh / config:

Host example_com_master
  HostName my.example.com
  User username
  PubkeyAuthentication no
  ControlMaster yes
  ControlPath ~/.ssh/sockets/example_com
  ControlPersist 10

Host my.example.com
  HostName my.example.com
  User username
  PubkeyAuthentication no
  ControlMaster no
  ControlPath ~/.ssh/sockets/example_com

問題2.0(TLDR)

一部のソフトウェア(PyCharm IDEなど)は、独自のSSHライブラリ/バイナリなどを使用ます。私が入力したもの~/.ssh/configは何も影響しないことを意味します、AFAIK。

それが私の現在の問題です。そのようなソフトウェアを「だまして」既存のマスター接続を使用する方法はありますか?


アイデア:通常は別のポートを使用して接続するようにソフトウェアを構成できるので、既存のマスターへの着信接続を多重化するある種のトンネリングを設定できるかどうか疑問に思っていました。しかし、私のfooは私を失敗させました...

編集:

主な目的は、リモートのPythonインタプリタ/デバッガに接続することです。

編集2:

22と80以外のすべてのポートは閉じています。ただし、次のことは可能です。

remote$ ssh localhost:2222
(password or securekey login, both work)
remote$ 

ただし、2222はlocalhostからの接続に対してのみ開いており、管理者は「誰でも使用できる」と言って追加のポートを開きません。


私はあなたの問題を誤解しているかもしれませんが、ローカルのsshマウントでそれを回避することはできませんか?これにより、sftpアクションがローカルコピーになり、sshは制御可能なマウントプロセスによって処理されます。
Belrog、2014年

私はそれを質問で述べたはずです...リモートPythonインタープリター/デバッガーを実行するにはSSHが必要です。私は実際にはファイル同期のためにsshfsマウントを用意しています:)
frnhr

ハードウェアの非常に特定のビットをリモートで操作していると思いますか?リモート開発は本当に苦痛です。ローカルVMは、それを機能させることができれば、より良い考えです。
Belrog、2014年

本当のデータ!しかし、この特定のプロジェクトでは、簡単に解決できないローカル環境の設定に伴ういくつかの複雑な問題があります:(
frnhr

@Belrog回答をコメントに変換しました。実際に質問に答える場合のみ、回答を投稿してください。説明を求めるには、コメントを投稿してください。それが彼らの目的です。
terdon

回答:


2

あなたが持っているかなり興味深い問題。

実際の解決策は、最初にシステム管理者に助けを求めることです。

それがオプションではない場合、次善の策はpyCharmのlibsshまたはそれが使用するもの(グーグルを実行してそれを理解できなかった)で `〜/ .ssh / config 'を解析することです。

それが不可能な場合は、ループバックアドレスでリッスンしているリモートホストで独自のsshデーモン実行し、ローカル転送でそれに接続できる可能があります

非特権sshデーモンをセットアップするには(SF回答のリンクからコピー):

  $ pwd
  /home/<USER>
  $ mkdir -p etc var/run
  $ cp /etc/sshd_config etc
  $ vi etc/sshd_config
  [Set `Port 2230']
  [Set `HostKey /home/<USER>/etc/ssh_host_rsa_key']
  [Set `UsePrivilegeSeparation no']
  [Set `PidFile /home/<USER>/var/run/sshd.pid']
  [:wq!]
  $ ssh-keygen -t rsa -f /home/<USER>/etc/ssh_host_rsa_key -N ''
  Generating public/private rsa key pair.
  Your identification has been saved in /home/<USER>/etc/ssh_host_rsa_key.
  Your public key has been saved in /home/<USER>/etc/ssh_host_rsa_key.pub.
  The key fingerprint is:
  02:5d:02:5d:e8:2e:c6:b9:4c:d9:93:6c:13:ef:5d:61 hein@vmbert2k8
  $ /usr/sbin/sshd -f /home/<USER>/etc/sshd_config -D

ローカルポートを転送します(ここでは2faでログインします)。

 ssh -L 2230:localhost:2230 example_com_master

そしてpyCharmをに転送しlocalhost:2230ます。カスタムsshdでキーペア認証を設定することもできます。

これはロングショットであり、システム管理者はこれを理解していない可能性があることに注意してください。

pyCharmがsshの実装にOpenSSHをすでに使用している可能性が高いです。もしそうなら、多重化サポートをpyCharmに追加することは、私が提案した回避策よりもはるかに簡単でしょう。


答えてくれてありがとう。管理者はおそらく私が自分のsshdを実行することを許可しないでしょう(利用可能なポートさえあるとは思えません)。しかし、サーバーで別のsshdを実行できる場合は、何も多重化する必要がないと思うので、キーペア認証用にサーバーを構成します。または私が逃したいくつかの利点はありますか?
frnhr 2014年

多重化をまったく必要としないのはあなたの言うとおりです:)。また、ユーザーが最初に私に尋ねることなくそのようなことをした場合、私は腹を立てることになるでしょう。また、とにかくsysadminに質問する場合は、localhostからの2faを必要としないほうがより正解です。それはとにかく私がいつもやっていることです。
GnP 2014年

:)そしてlocalhostから2faがなかった場合、トンネリングで問題を解決できますか?
frnhr 2014年

まさに、ローカルホストからの2faを必要としない場合、トンネル経由の接続はローカル接続のようなものです。ファイルの最後にこれを追加しない場合は、sshd_configのマジックのMatch Address 127.0.0.1 PasswordAuthentication yes 後に、おそらくMatchセクションを閉じるための1行のシングルが続きます。
GnP 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.