これを Windows でテストするには、Cygwin を入手するか、OpenSSHssh
をインストールして、Linux と同じように Windows のコマンド ラインから実行できるようにします。
Windows ボックスで実行したらssh
、まず SSH を介してトンネルを作成してみてください。コマンドラインからこれを実行します。
ssh -f <server_user>@<server_ip> -L <unused_local_port>:localhost:<database_remote_port> -N
明らかに、「<>」内のすべてを適切な情報に置き換えてください。パスワードを要求されますが、これはデータベースのパスワードではなく、サーバー自体のパスワードであることに注意してください。特に、server_ip は、データベースを搭載したサーバーである必要はなく、適切なサブネット内にあり、ほとんどすべての Linux マシンである SSH サーバーを実行する任意のサーバーです。
ここで、IP をlocalhostにし、ポートをunused_local_portにすることを除いて、ODBC 接続をセットアップします。ここで、R で新しい ODBC 接続に接続してみます。これが機能する場合は、途中までです。
system
次の問題はパスワードです。SSH 経由で接続するにはパスワードを入力する必要があるためですが、R では単純なコマンドの後にパスワードを入力することはできません。そのため、いくつかの公開/秘密 RSA キー ペアをセットアップする必要があります。特に、これにより、Windowsボックスのユーザー/パスにアクセスできる人は誰でもサーバーに自動的にアクセスできるようになるため、注意してください. まず、SSH キーを生成します。
ssh-keygen -t rsa
パスフレーズを作成せず、デフォルトの場所に保存します。ここで、リモート ホストに公開鍵のディレクトリを作成し、そこに公開鍵をドロップします。
# This creates a directory on the other machine if it wasn't already there. (Type in your password on the remote machine)
ssh <server_user>@<server_ip> mkdir -p .ssh
# This adds your public key to the list of accepted ones:
cat ~/.ssh/id_rsa.pub | ssh <server_user>@<server_ip> 'cat >> .ssh/authorized_keys'
ここで、コマンド ラインから再度トンネルを作成してみます。
ssh -f <server_user>@<server_ip> -L <unused_local_port>:localhost:<database_remote_port> -N
パスワードの入力を求められない場合は、鍵ペアの作成に成功しています。ssh
これで、コマンド ラインからコマンドを実行する準備が整いました。ただし、それを行う前に、ssh コマンドを試して強制終了してください。そうすれば、R が実際にトンネルを作成しており、古いトンネルを再利用しているだけではないことを確認できます。これは、Windows タスク マネージャー (Ctrl+Alt+Esc) を使用して行うことができ、右クリックして ssh.exe のプロセスを終了するだけです。
だから、ただ実行してください:
system('ssh -f <server_user>@<server_ip> -L <unused_local_port>:localhost:<database_remote_port> -N')
次に、新しいトンネリングされた ODBC 接続に接続します。