Ejemplo n.º 1
0
 def init_ssh(self):
     """set up ssh tunnels, if needed."""
     if not self.sshserver and not self.sshkey:
         return
     
     if self.sshkey and not self.sshserver:
         self.sshserver = self.ip
         self.ip=LOCALHOST
     
     lports = select_random_ports(4)
     rports = self.shell_port, self.iopub_port, self.stdin_port, self.hb_port
     self.shell_port, self.iopub_port, self.stdin_port, self.hb_port = lports
     
     remote_ip = self.ip
     self.ip = LOCALHOST
     self.log.info("Forwarding connections to %s via %s"%(remote_ip, self.sshserver))
     
     if tunnel.try_passwordless_ssh(self.sshserver, self.sshkey):
         password=False
     else:
         password = getpass("SSH Password for %s: "%self.sshserver)
     
     for lp,rp in zip(lports, rports):
         tunnel.ssh_tunnel(lp, rp, self.sshserver, remote_ip, self.sshkey, password)
     
     self.log.critical("To connect another client to this tunnel, use:")
     self.log.critical(
         "--existing --shell={0} --iopub={1} --stdin={2} --hb={3}".format(
             self.shell_port, self.iopub_port, self.stdin_port,
             self.hb_port))
Ejemplo n.º 2
0
def tunnel_to_kernel(ci, hostname, sshkey=None, password=None, timeout=10):
    """tunnel connections to a kernel via ssh. remote ports are specified in
    the connection info ci."""
    lports = tunnel.select_random_ports(4)
    rports = ci['shell_port'], ci['iopub_port'], ci['stdin_port'], ci['hb_port']
    remote_ip = ci['ip']
    for lp, rp in zip(lports, rports):
        tunnel.ssh_tunnel(lp, rp, hostname, remote_ip, sshkey, password, timeout)
    return tuple(lports)
Ejemplo n.º 3
0
def tunnel_to_kernel(ci, hostname, sshkey=None, password=None, timeout=10):
    """tunnel connections to a kernel via ssh. remote ports are specified in
    the connection info ci."""
    lports = tunnel.select_random_ports(4)
    rports = ci['shell_port'], ci['iopub_port'], ci['stdin_port'], ci[
        'hb_port']
    remote_ip = ci['ip']
    for lp, rp in zip(lports, rports):
        tunnel.ssh_tunnel(lp, rp, hostname, remote_ip, sshkey, password,
                          timeout)
    return tuple(lports)
Ejemplo n.º 4
0
def tunnel_to_kernel(connection_info, sshserver, sshkey=None):
    """tunnel connections to a kernel via ssh

    This will open four SSH tunnels from localhost on this machine to the
    ports associated with the kernel.  They can be either direct
    localhost-localhost tunnels, or if an intermediate server is necessary,
    the kernel must be listening on a public IP.

    Parameters
    ----------
    connection_info : dict or str (path)
        Either a connection dict, or the path to a JSON connection file
    sshserver : str
        The ssh sever to use to tunnel to the kernel. Can be a full
        `user@server:port` string. ssh config aliases are respected.
    sshkey : str [optional]
        Path to file containing ssh key to use for authentication.
        Only necessary if your ssh config does not already associate
        a keyfile with the host.

    Returns
    -------

    (shell, iopub, stdin, hb) : ints
        The four ports on localhost that have been forwarded to the kernel.
    """
    if isinstance(connection_info, string_types):
        # it's a path, unpack it
        with open(connection_info) as f:
            connection_info = json.loads(f.read())

    cf = connection_info

    lports = tunnel.select_random_ports(4)
    rports = cf['shell_port'], cf['iopub_port'], cf[
        'stdin_port'], cf['hb_port']

    remote_ip = cf['ip']

    if tunnel.try_passwordless_ssh(sshserver, sshkey):
        password = False
    else:
        password = getpass("SSH Password for %s: " % cast_bytes_py2(sshserver))

    for lp, rp in zip(lports, rports):
        tunnel.ssh_tunnel(lp, rp, sshserver, remote_ip, sshkey, password)

    return tuple(lports)
Ejemplo n.º 5
0
def tunnel_to_kernel(connection_info, sshserver, sshkey=None):
    """tunnel connections to a kernel via ssh
    
    This will open four SSH tunnels from localhost on this machine to the
    ports associated with the kernel.  They can be either direct
    localhost-localhost tunnels, or if an intermediate server is necessary,
    the kernel must be listening on a public IP.
    
    Parameters
    ----------
    connection_info : dict or str (path)
        Either a connection dict, or the path to a JSON connection file
    sshserver : str
        The ssh sever to use to tunnel to the kernel. Can be a full
        `user@server:port` string. ssh config aliases are respected.
    sshkey : str [optional]
        Path to file containing ssh key to use for authentication.
        Only necessary if your ssh config does not already associate
        a keyfile with the host.
    
    Returns
    -------
    
    (shell, iopub, stdin, hb) : ints
        The four ports on localhost that have been forwarded to the kernel.
    """
    if isinstance(connection_info, basestring):
        # it's a path, unpack it
        with open(connection_info) as f:
            connection_info = json.loads(f.read())

    cf = connection_info

    lports = tunnel.select_random_ports(4)
    rports = cf['shell_port'], cf['iopub_port'], cf['stdin_port'], cf[
        'hb_port']

    remote_ip = cf['ip']

    if tunnel.try_passwordless_ssh(sshserver, sshkey):
        password = False
    else:
        password = getpass("SSH Password for %s: " % cast_bytes_py2(sshserver))

    for lp, rp in zip(lports, rports):
        tunnel.ssh_tunnel(lp, rp, sshserver, remote_ip, sshkey, password)

    return tuple(lports)
Ejemplo n.º 6
0
 def init_ssh(self):
     """set up ssh tunnels, if needed."""
     if not self.sshserver and not self.sshkey:
         return
     
     if self.sshkey and not self.sshserver:
         self.sshserver = self.ip
         self.ip=LOCALHOST
     
     lports = select_random_ports(4)
     rports = self.shell_port, self.iopub_port, self.stdin_port, self.hb_port
     self.shell_port, self.iopub_port, self.stdin_port, self.hb_port = lports
     
     remote_ip = self.ip
     self.ip = LOCALHOST
     self.log.info("Forwarding connections to %s via %s"%(remote_ip, self.sshserver))
     
     if tunnel.try_passwordless_ssh(self.sshserver, self.sshkey):
         password=False
     else:
         password = getpass("SSH Password for %s: "%self.sshserver)
     
     for lp,rp in zip(lports, rports):
         tunnel.ssh_tunnel(lp, rp, self.sshserver, remote_ip, self.sshkey, password)