SSH

Aus Programmers Guide

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
Zeile 1: Zeile 1:
-
== Ubuntu ==
+
== Ubuntu ==
=== Authentifizierung mit Hilfe von Schlüsseln  ===
=== Authentifizierung mit Hilfe von Schlüsseln  ===
Zeile 8: Zeile 8:
</source>  
</source>  
-
[[Category:Ubuntu]] [[Category:Bash]] [[Category:Snippet]]
+
<br>
 +
 
 +
== JAVA  ==
 +
 
 +
=== Einen Tunnel Herstellen mit JSch  ===
 +
 
 +
<source lang="java">
 +
...
 +
JSch jsch = new JSch();
 +
session = jsch.getSession(<ssh_user>, <ssh_host>, <ssh_port>);
 +
UserInfo ui = new MyUserInfo();
 +
session.setUserInfo(ui);
 +
session.connect();
 +
int assinged_port;
 +
assinged_port = session.setPortForwardingL(<localport>, <tunnelziel>, <port>);
 +
System.out.println("localhost:" +assinged_port+ " -> <tunnelziel>:<tunnelport>");
 +
...
 +
 
 +
 
 +
public static class MyUserInfo implements UserInfo, UIKeyboardInteractive {
 +
public String getPassword() {
 +
return passwd;
 +
}
 +
 
 +
public boolean promptYesNo(String str) {
 +
/*
 +
* Object[] options={ "yes", "no" }; int
 +
* foo=JOptionPane.showOptionDialog(null, str, "Warning",
 +
* JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null,
 +
* options, options[0]);
 +
*
 +
* return foo==0;
 +
*/
 +
return true;
 +
 
 +
}
 +
String passwd;
 +
JTextField passwordField = (JTextField) new JPasswordField(20);
 +
 +
public String getPassphrase() {
 +
return null;
 +
}
 +
 
 +
public boolean promptPassphrase(String message) {
 +
return true;
 +
}
 +
 
 +
public boolean promptPassword(String message) {
 +
 +
 
 +
Object[] ob = { passwordField };
 +
int result = JOptionPane.showConfirmDialog(null, ob, message,
 +
JOptionPane.OK_CANCEL_OPTION);
 +
if (result == JOptionPane.OK_OPTION) {
 +
passwd = passwordField.getText();
 +
 +
return true;
 +
} else {
 +
// wenn Abbrechen beim PW-Feld gedrückt beenden wir
 +
disconnectAndExit();
 +
 
 +
return false;
 +
}
 +
}
 +
 
 +
public void showMessage(String message) {
 +
JOptionPane.showMessageDialog(null, message);
 +
}
 +
 
 +
final GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 1, 1,
 +
GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
 +
new Insets(0, 0, 0, 0), 0, 0);
 +
private Container panel;
 +
 
 +
public String[] promptKeyboardInteractive(String destination,
 +
String name, String instruction, String[] prompt, boolean[] echo) {
 +
panel = new JPanel();
 +
panel.setLayout(new GridBagLayout());
 +
 
 +
gbc.weightx = 1.0;
 +
gbc.gridwidth = GridBagConstraints.REMAINDER;
 +
gbc.gridx = 0;
 +
panel.add(new JLabel(instruction), gbc);
 +
gbc.gridy++;
 +
 
 +
gbc.gridwidth = GridBagConstraints.RELATIVE;
 +
 
 +
JTextField[] texts = new JTextField[prompt.length];
 +
for (int i = 0; i < prompt.length; i++) {
 +
gbc.fill = GridBagConstraints.NONE;
 +
gbc.gridx = 0;
 +
gbc.weightx = 1;
 +
panel.add(new JLabel(prompt[i]), gbc);
 +
 
 +
gbc.gridx = 1;
 +
gbc.fill = GridBagConstraints.HORIZONTAL;
 +
gbc.weighty = 1;
 +
if (echo[i]) {
 +
texts[i] = new JTextField(20);
 +
} else {
 +
texts[i] = new JPasswordField(20);
 +
}
 +
panel.add(texts[i], gbc);
 +
gbc.gridy++;
 +
}
 +
 
 +
if (JOptionPane.showConfirmDialog(null, panel, destination + ": "
 +
+ name, JOptionPane.OK_CANCEL_OPTION,
 +
JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {
 +
String[] response = new String[prompt.length];
 +
for (int i = 0; i < prompt.length; i++) {
 +
response[i] = texts[i].getText();
 +
}
 +
return response;
 +
} else {
 +
return null; // cancel
 +
}
 +
}
 +
}
 +
</source>
 +
 
 +
[[Category:Ubuntu]][[Category:Bash]][[Category:Snippet]][[Category:Java]]

Version vom 14:39, 5. Mai 2010

Inhaltsverzeichnis

Ubuntu

Authentifizierung mit Hilfe von Schlüsseln

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server


JAVA

Einen Tunnel Herstellen mit JSch

...
JSch jsch = new JSch();
session = jsch.getSession(<ssh_user>, <ssh_host>, <ssh_port>);
UserInfo ui = new MyUserInfo();
session.setUserInfo(ui);
session.connect();
int assinged_port;
assinged_port = session.setPortForwardingL(<localport>, <tunnelziel>, <port>);
System.out.println("localhost:" +assinged_port+ " -> <tunnelziel>:<tunnelport>");
...
 
 
public static class MyUserInfo implements UserInfo, UIKeyboardInteractive {
	public String getPassword() {
			return passwd;
	}
 
	public boolean promptYesNo(String str) {
		/*
		 * Object[] options={ "yes", "no" }; int
		 * foo=JOptionPane.showOptionDialog(null, str, "Warning",
		 * JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null,
		 * options, options[0]);
		 * 
		 * return foo==0;
		 */
		return true;
 
	}
	String passwd;
	JTextField passwordField = (JTextField) new JPasswordField(20);
 
	public String getPassphrase() {
		return null;
	}
 
	public boolean promptPassphrase(String message) {
		return true;
	}
 
	public boolean promptPassword(String message) {
 
 
		Object[] ob = { passwordField };
		int result = JOptionPane.showConfirmDialog(null, ob, message,
		JOptionPane.OK_CANCEL_OPTION);
		if (result == JOptionPane.OK_OPTION) {
			passwd = passwordField.getText();
 
			return true;
		} else {
			// wenn Abbrechen beim PW-Feld gedrückt beenden wir
			disconnectAndExit();
 
			return false;
		}
	}
 
	public void showMessage(String message) {
		JOptionPane.showMessageDialog(null, message);
	}
 
	final GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 1, 1,
			GridBagConstraints.NORTHWEST, GridBagConstraints.NONE,
			new Insets(0, 0, 0, 0), 0, 0);
	private Container panel;
 
	public String[] promptKeyboardInteractive(String destination,
			String name, String instruction, String[] prompt, boolean[] echo) {
		panel = new JPanel();
		panel.setLayout(new GridBagLayout());
 
		gbc.weightx = 1.0;
		gbc.gridwidth = GridBagConstraints.REMAINDER;
		gbc.gridx = 0;
		panel.add(new JLabel(instruction), gbc);
		gbc.gridy++;
 
		gbc.gridwidth = GridBagConstraints.RELATIVE;
 
		JTextField[] texts = new JTextField[prompt.length];
		for (int i = 0; i < prompt.length; i++) {
			gbc.fill = GridBagConstraints.NONE;
			gbc.gridx = 0;
			gbc.weightx = 1;
			panel.add(new JLabel(prompt[i]), gbc);
 
			gbc.gridx = 1;
			gbc.fill = GridBagConstraints.HORIZONTAL;
			gbc.weighty = 1;
			if (echo[i]) {
				texts[i] = new JTextField(20);
			} else {
				texts[i] = new JPasswordField(20);
			}
			panel.add(texts[i], gbc);
			gbc.gridy++;
		}
 
		if (JOptionPane.showConfirmDialog(null, panel, destination + ": "
				+ name, JOptionPane.OK_CANCEL_OPTION,
				JOptionPane.QUESTION_MESSAGE) == JOptionPane.OK_OPTION) {
			String[] response = new String[prompt.length];
			for (int i = 0; i < prompt.length; i++) {
				response[i] = texts[i].getText();
			}
			return response;
		} else {
			return null; // cancel
		}
	}
}
Persönliche Werkzeuge